我在尝试让Gradle通过NDK构建编译我的JNI代码的调试版本时遇到了很多困难。我已经在build.gradle
文件中将调试版本设置为可调试,如下所示:
buildTypes {
debug {
debuggable true
jniDebuggable true
}
}
如果我查看构建/编辑构建类型,我可以确认交换机正在生效。但是,一旦我检查ndkBuild_build_command.txt
目录中的.externalNdkBuild
文件,我会注意到以下条目:
NDEBUG=1
APP_PLATFORM=android-9
我可以确认我的JNI代码似乎不可调试。即使断点触发,变量都显示"变量不可用"在LLVM中。
关于为什么NDEBUG即使在调试版本中也会打开的任何想法?作为一个旁注,我也不知道android-9平台在哪里进入......我没有把自己设置在我能找到的任何地方。
答案 0 :(得分:4)
如果您将Android Studio 2.2与 externalNativeBuild 一起使用,则可以通过参数覆盖在 Application.mk 或APP_OPTIM=debug
中设置NDK_DEBUG=1
,例如
externalNativeBuild {
ndkBuild {
arguments "NDK_DEBUG:=1"
}
}