本文的目的就是实现在Android studio上也是Android.mk的方式构建native程序
由于AndroidStudio有默认的ndk开发环境。因此我们要做的就是将其关掉;然后通过命令进行:
- jni的生成
- so的生成
通过Android生成jni接口文件
1.直接上图(File->settings)
2.编辑javah工具
Program: path of the javeh.exe
Parameters: -classpath C:\androidtool\sdk\platforms\android-25\android.jar;. -jni -d $ModuleFileDir$/src/main/jni $FileClass$
注意: -classpath 后面跟了两个参数 C:\androidtool\sdk\platforms\android-25\android.jar;和 . ;因为android SDK中的字节码也需要被明确指出;
还有一个值得注意的地方: main/jni 这个目的,jni是我们自己创建的。
Working directories: $ModuleFileDir$\src\main\java
最后点击ok,这样就完成了javah工具的设置。
android studio中ndk-build 的设置
Program: C:\androidtool\sdk\ndk-bundle\ndk-build.cmd(path of the ndk-build.cmd)
Parameters: NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1
Working directories: $SourcepathEntry$
配置gradle
android {
defaultConfig {
}
buildTypes {
}
sourceSets { main { jni.srcDirs = [] } } //add this line
}
简单使用
- 创建一个jni目录,用了存放jni头文件和*.mk文件
- 在jni目录下创建Android.mk 和Applicaiton.mk 两个文件,用来描述ndk的必要信息
- 选中带有native方法的类,如下图的MainActivity,执行 external tool -> javah(已定义),即可生成jni 头文件于jni目录下。
- 通过C/C++语言实现头上述头文件中声明的方法
使用ndk-build生成so,具体如下图:
在java中加载使用so,然后运行程序。