//TODO:点太多,简要记录,有时间在整理(NEVERDO?)
使用cmake
jni资料:https://www.jianshu.com/p/87ce6f565d37
坑总结:cmake项目
MakeFileLists.txt的几点:
添加编译对象
添加源文件
设置cppflags
添加预处理宏(类似vs的宏)
获取文件夹下的所有源文件
设置头文件路径
设置库目录
添加链接库
链接失败:库的顺序
使用as自动创建,gradle同步失败:
CMake Error: CMake was unable to find a build program corresponding to \"Ninja\"根据https://blog.csdn.net/weixin_34037977/article/details/92435326,是gradle版本低
升级gradle build tool到最新,同时需要升级gradle
gradle build tool 与gradle是什么东西?参照:
彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系https://www.cnblogs.com/jiangxinnju/p/8229129.html
然后
Failed to notify build listener.
> java.lang.AbstractMethodError (no error message)
根据https://www.jianshu.com/p/e97f90197611
是gradle版本高于as的了,升级as太慢,那么把gradle降下来,3.2.0
再同步,下载包失败,参考https://blog.csdn.net/u011368551/article/details/84071403
repositories {
google()
jcenter()
mavenCentral()
}
然后又是问题:
Failed to find Build Tools revision 28.0.2
向导创建的项目还这么多问题,根据以前能编过的项目,这样设置:
compileSdkVersion 23
buildToolsVersion "25.0.0"
defaultConfig {
minSdkVersion 21
targetSdkVersion 23
.....
}
buildToolsVersion 25.0.0,在Tools -> sdk manager -> sdk tool ->右下角点(show package details) -> Android SDK tools里,下载好了的
然后:
Android resource linking failed
百度到的结果,又是compile sdk version太低,要28,那么,就下载28的sdk tool,改成
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
至此成功,总结:as版本 gradle版本 gradle插件版本 sdk版本 能支持arm64 opengles3
我的目的是,app不适用jni,一个模块编译成aar,使用jni
新建模块,android libary,然后app里,导入aar
参照,https://www.jianshu.com/p/5f0edc95a398,需要把aar复制到app下的libs下,并设置tree *.aar,并加一个
error: undefined reference to '__android_log_write':
cmake需要链接库log
作者:重霄