Android studio NDK配置使用
2016-05-20 23:34
507 查看
Get Started
安装:
下载NDK,解压(一般是解压到SDK里面,但也可以是其他位置)配置环境变量:在系统PATH环境变量中添加NDK的根路径
Concepts
介绍
NDK就是能让你在安卓应用中运行C和C++代码(称为”native code”)的工具主要组件
ndk-build:NDK的核心工具,用来编译native代码,生成二进制文件(机器可直接运行的),并且自动将这些文件复制到你的app路径中(对于android studio 也就是app-src-main下面)native方法的生命需要加一个native标识符:
public native int add(int x, int y);
表明这个方法在一个native库里面
Native共享库,也就是C或者C++代码编译后产生的 .so文件
注意:如果两个库的某个函数使用了同样的名字,在不构成C++的重载情况下,都被视为重复的,将会编译报错
native静态库:.a结尾,可以连接其他库
JNI(java native interface): Java和C++的调用接口
ABI(Application Binary Interface): 因为运行环境的硬件实现不用,所以ABI是用来供在不用的硬件下运行调用的。也即是.so文件干的事
Manifest:如果你的应用 没用java组件,需要在manifest中声明NativeActivity
下面两个文件需要在ndk编译的时候用到:
Android.mk:编译配置文件,ndk-build命令调用时会看这个文件,里面定义了module名字和native code的文件名字等其他信息
Application.mk: 需要的组件的信息
使用流程
决定哪个用native code写创建一个安卓项目
如果只用native 代码写应用,要在清单文件中配置
创建Android.mk文件
创建你的Application.mk,这里面如果有些配置你没说明,将使用下面默认的配置
ABI: armeabi
Toolchain: GCC 4.8
Mode: Release
STL: system
将你的native代码放在jni目录下
使用ndk-build来编译代码(需要的在jni目录下执行)
应用打包
BUILD
Andorid.mk文件
开头语句:LOCAL_PATH := $(call my-dir)
指示你源文件的位置,my-dir是个宏,它保存了你的Android.mk的路径位置
下一句:
include $(CLEAR_VARS)
作用是清除变量,像LOCAL_MODULE, LOCAL_SRC_FILES, 以及LOCAL_STATIC_LIBRARIES,但是注意它不清楚上面的PATH变量,为什么清除,因为GNU Makefile时,这些变量是全局共用的
接下来:
LOCAL_MODULE := hello-jni
相当于给你native code组件取个名字,.so文件的名字就是lib + 你的module名字合成的,不用module的名字必须独一无二,且没有空格
下一句:
LOCAL_SRC_FILES := hello-jni.c
指示你C或者C++文件的名字
最后一句:
include $(BUILD_SHARED_LIBRARY)
让GNU makefile收集相关的变量信息运行
Application.mk
常用的是平台变量:相关文章推荐
- android 中怎么控制EditText只能输入数字和字母?
- Android-->如何填MediaRecorder的坑(附TextureView的使用)
- Android权限系统
- android中事件分发机制
- Android官方文档之Creating a Content Provider
- android随笔小记ContentProvider
- 用SurfaceView绘制正弦曲线
- android讲义 2016/5/8
- android判空
- Android源码解析(二十四)-->onSaveInstanceState执行时机
- android studio 常用插件汇总
- greenDao简单的增删改查
- VirtualBox安装android-x86虚拟机
- android:ListView下拉刷新上拉加载(SwipeRefreshLayout+滑动监听加载更多)
- Android ADT——快速更新API
- Android 开发中的微技巧和小知识
- Android RxJava+Retrofit 一次(合并)请求多个接口
- 利用注解初始化View对象
- android setClickable 不起作用 没有作用
- Android开发-数据存储SharedPreferences工具类、Set<String>保存问题、源码分析