jni编译

记录一次编译遇到很郁闷的问题。

就是修改c文件后(该文件在module中),加了行日志,运行androidstudio工程,但是并没有打印出我增加的日志,但是工程仍然正常运行,十分不理解。

点击module的gradle--Task--other---assembleDebug,重新生成编译文件,文件在

SerialPortLibrary\.cxx\cmake\debug\armeabi-v7a\CMakeFiles\SerialPort.dir\SerialPort.c.o下,编译好的so在SerialPortLibrary\build\intermediates\cmake\debug\obj\armeabi-v7a\libSerialPort.so 下。

看着命名编译好了这个so,但是重新运行project,加的日志就是没打印。

检查gradle文件都正常,CMakeLists文件都正常,编译都正常,无奈下,查看其它正常的带JNI代码的工程配置,检查是否一样,倒是看到一些不一样的地方,ndk的 编译版本不一致,只能先改成一致。

ndk {
    abiFilters 'armeabi-v7a','arm64-v8a'
}
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }

CMakeList文件:

cmake_minimum_required(VERSION 3.10.2)

...

这些信息都改成一致了,但是还是编译正常,运行正常,但是就是不打印加的那行日志,实在不理解。

不理解啊,不理解。

clean,rebuild,run,一切正常,清楚工程缓存重启AndroidStudio运行也一样。

已经没辙了,无奈删除module下的c文件和h文件,结果更夸张的是,一切运行正常。。。

这下肯定有其他地方保存了这个so并且工程用的是那个so,压根就没用编译好的这个so,于是检查主工程,结果还真在jniLibs下找到了这个libSerialPort.so,太气人了。

可能上次编译运行后,为了方便直接就把编译好的so拷贝过来了,导致这次把自己坑了。

然后删掉这个so,重新编译,运行,果然打印那行日志了。。。

其他的就是慢慢调试代码了。

对于cmake编译,后续需要更多了解,因为不同的ndk版本,可能会导致编译错误,待续。。。

QQ(504490738)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值