现在好像JNI的开发很热门,作为c++的渣渣的我决心入门来了解一下这到底是个什么东西
一开始的配置可以看这篇博客,相信现在大多数人的版本都是2.2.以上了,所以前面的比较具体的配置过程可以当做一个了解,看到底Java是怎么跟本地c++进行沟通的。
2.2以上版本的只需要在创建项目时注意下图的某些位置打钩即可:
- Exceptions Support:如果您希望启用对 C++ 异常处理的支持,请选中此复选框。如果启用此复选框,Android Studio 会将 -fexceptions 标志添加到模块级 build.gradle 文件的 cppFlags 中,Gradle 会将其传递到 CMake。
- Runtime Type Information Support:如果您希望支持 RTTI,请选中此复选框。如果启用此复选框,Android Studio 会将 -frtti 标志添加到模块级 build.gradle 文件的 cppFlags 中,Gradle 会将其传递到 CMake。
然后在项目创建的过程中,会报错,点击进行部件的下载就行,要确保:NDK、CMake、LLDB这3个东西都installed
然后我现在遇到了一个报错,大概就是:armeabi不可用之类的。
什么东西,小菜鸡真的不懂so和ABI,所以我找到了下面这篇博客
解决办法:
在上图这个位置添加以下代码即可,做的是引入第三方so库的操作:
ndk{
moduleName "native-lib"
abiFilters "x86","x86_64","armeabi-v7a","arm64-v8a"
}
跑HelloWorld成功的截图:
可是,上面主要是基于新建项目才能进行JNI开发,但是很多时候我们都是想要在现有的工程上继续进行NDK开发,那么这时候NDK的环境又该怎么配置呢?
详细的可以看这篇博客,一步步来就行。
要注意的点主要是一些名称要根据自己的项目进行修改即可。