使用动态注册jni函数:https://blog.csdn.net/wanghao200906/article/details/79153172
编译jni文件:https://blog.csdn.net/qq_22494029/article/details/79079918
Android NDK 开发:https://blog.csdn.net/allen315410/article/details/41826511
踩的坑
1、已创建的demo,创建时没有选在支持C++,网上很多资料是基于已选择支持C++的指导。
解决方法:个人理解,创建项目时向导可设置的,项目创建后都可以配置。因此直接添加C++目录及代码。
2、在创建目录时,AndroidStudio中提供创建目录,适用于jni的是创建一个jni目录
把C++文件放进去后,右键添加jni的module,选择 “Link C++ Project with Gradle”。这时在src/main下新增了一个CPP文件夹,之前添加的C++文件也找不到。
在工程目录下查看,实际没有生成CPP文件夹,这是把创建的jni目录改为CPP,在AndroidStudio刷新工程。这时就可以看到新增的cpp文件以及ndk的一些.h文件。
3、在module下的build.gradle增加对CMakeList.txt的依赖,同步时保找不到一些函数,如path
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.itech.demo"
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// so支持的cpu架构
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
abiFilters 'armeabi-v7a'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// jni编译依赖
externalNativeBuild {
cmake {
path file('CMakeLists.txt')
}
}
}
解决方法:
File–>settings–>Plugins,去掉Android NDK Support的勾选,重启AndroidStudio即可。