android studio ndk 代码提示,Android studio 调试NDK C++ 代码,遇到的问题
NDK调试问题:在使用AS调试NDK代码的时候,出现一些问题,java中的jni函数红名,之前也出现过,在网上找了好多,也询问了鹅场的技术,他说有可能是AS不稳定。确实我重新安装AS,jni函数会显示正常,但不知道怎么一下jni函数就又红名了。最近又去搞了一下这个问题,把过程总结了一下,操作流程工程状态更改更改后改变的状态1B工程1、ndkbuild2、jni函数正常(函数颜色不是红色,可以跟进去
NDK调试问题:
在使用AS调试NDK代码的时候,出现一些问题,java中的jni函数红名,之前也出现过,在网上找了好多,也询问了鹅场的技术,他说有可能是AS不稳定。确实我重新安装AS,jni函数会显示正常,但不知道怎么一下jni函数就又红名了。
最近又去搞了一下这个问题,把过程总结了一下,
操作流程
工程
状态
更改
更改后改变的状态
1
B工程
1、ndkbuild
2、jni函数正常(函数颜色不是红色,可以跟进去c++代码)
3、不能调试。
不能调试
2
A工程
1、ndkbuild
2、jni函数正常
3、不能调试。
使用gradle-experimental
可以调试
3
B工程
1、ndkbuild
2、jni函数正常
3、不能调试。
A工程使用gradle-experimental后
jni函数显示红色.(难道需要invalidate cache and restart)
把ndkbuild 工程换成 cmake
jni函数正常
没有使用 gradle-experimental 也能调试
4
A工程
去掉gradle-experimental
可以调试
jni函数正常
网上有人说NDK调试需要gradle-experimental,但是官方文档并没有提这个。我后来没有使用gradle-experimental,确实也可以调试。没用gradle-experimental的时候,是不能调试的,也就是说,用了一下gradle-experimental,后来不用代码也能调试。(这不是结论,这是我遇到的一个情况)
很奇怪的一个问题,我暂时得出的结论是:
1. 调试不需要gradle-experimental
2. 最好使用cmake编译ndk代码。
有朋友知道原因的可以指点一下
gradle-experimental与gradle版本对应关系
在官方文档中, Experimental Plugin User Guide这个对应关系只更新到gradle 2.14.1
后来我找来找去,我想既然文档没有,源码中应该有这个关系的代码吧。果然被我发现了
在这里查看gradle-experimental的历代版本,其中包括源码。找到.pom文件,其中声明使用’com.android.tools.build’ 的gradle-core版本,跟你的AS版本一致的就能用。
遇到这么一个事情,分享给大家,我是在2017.5.12早上更新的AS 版本是2.3.2,在查找.pom文件的时候,发现0.9.1的gradle-experimental,依赖com.android.tools.build的gradle-core: 版本2.3.1,在往上找0.10.0-alpha1,却依赖com.android.tools.build的gradle-core: 版本是2.4.0-alpha1’。找了半天没找到2.3.2的版本,于是就用了0.9.1的gradle-experimental,结果sync project的时候提示更新到0.9.2。这说明0.9.2的版本是存在的。
当时好奇怪,结果第二天这里就出现了0.9.2版本
https://bintray.com 网站更新库,可能不是很及时,所以如果没找到自己要的,可以先直接用上
CMake和ndkbuild使用过程的一些情况
B工程使用ndkbuild的时候,使用的是r10,使用13.1.3345770会出现这个错误。 但使用cmake后,使用13.1.3345770也正常了。
不知道是mk文件配置不正确,还是ndkbuild不兼容13.1的原因。有朋友知道原因的可以指点一下
更多推荐
所有评论(0)