学习JNI记录
Posted wzj_what_why_how
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习JNI记录相关的知识,希望对你有一定的参考价值。
这是我在学习写jni和使用自己写的jni demo 的项目:
https://gitee.com/wzj1157362131/jni_knowledge_pooling.git
总共分了三个分支:
- master:放在最初的demo
- dev_note:做一些知识点做了注释说明和一些使用上的补充
- dev_arr:这个是用来打包成arr文件供其他项目进行调用的
遇到的问题:
在使用自己打得arr包到其他项目的时候,出现了这个问题(这个问题其实算不是跟jni的问题,应该是属于module开发的问题哈哈哈):
定位到问题的原因是:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.JniApplication">
<activity android:name=".JniMainActivity"></activity>
</application>
原因分析:这是Manifest合并冲突的错误,当低优先级的清单文件属性合并到高优先级中,假如高优先级中没有对应的属性,则直接合并,假如有并且不一样,这时候就有了冲突。
因此,去掉之后重新rebuild project,问题解决。
遇到的问题:
No version of NDK matched the requested version 21.0.6113669
这个问题是因为NDK版本引起的同步报错。
最全解决办法: No version of NDK matched the requested version 20.0.5594570
用您要使用的NDK版本替换双引号之间的字符串
android {
ndkVersion "21.4.7075529"
}
问题修复。
调用之前,注意要做加载NDK的操作
companion object {
init {
//调用.so文件中的C++代码 之前需要加载NDK库
System.loadLibrary("native-lib")
}
}
以上是关于学习JNI记录的主要内容,如果未能解决你的问题,请参考以下文章