很长一段时间以来,我一直在(从 mac 终端)成功构建这个本机应用程序,但今天我遇到了一个我似乎无法确定的错误。在厌倦了所有 javac 警告后,我升级到了更新版本的 ant。我不确定它是否相关,但时间是可疑的。我仍然可以构建、部署和运行我的应用程序,但现在我不能再使用 ndk-gdb 来调试应用程序的本机部分。经检查,gdb.setup 文件未添加到调试 apk 中。
这是构建顺序、缩写输出和信息。我正在寻找有关如何解决该问题的建议。
我已经对 NDK 和 ant 构建进行了全面清理
android NDK 版本和 android SDK 版本都是最新的。我使用内置的 ndk-bundle 加载了 android studio sdk 工具。
我们开发的设备没有植根,也不是一种选择。
hsmith$ java -version java 版本“1.8.0_45”
Java(TM) SE 运行时环境(构建 1.8.0_45-b14) Java HotSpot(TM) 64 位服务器 VM(构建 25.45-b02,混合模式)
hsmith$$ANT_HOME
-bash: /Users/hsmith/dk/ant/apache-ant-1.9.6: 是一个目录
hsmith$ ndk-build -j4 NDK_DEBUG=1
[armebi-v7a] Gdbserver : [arm-linux-androideabi-4.8] libs//gdbserver
[armebi-v7a] Gdbsetup : libs//gdb.setup
[armebi-v7a] 安装:lib1.so => libs/armebi-v7a/lib1.so
[armebi-v7a] 安装:lib2.so => libs/armebi-v7a/lib2.so
[armebi-v7a] 安装:lib3.so => libs/armebi-v7a/lib3.so
hsmith$ ant debug ... -package: [apkbuilder] 找到修改后的输入文件
[apkbuilder] 创建 -debug-unaligned.apk 并使用调试密钥对其进行签名...
-后包装:
-做调试:
[zipalign] 在最终的 apk 上运行 zip align...
[echo] Debug Package: /Users/hsmith/packageFolder/bin/<package>-debug.apk
[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop
[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop
[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop
[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop
-构建后:
调试:
构建成功
hsmith$ adb install -r ~/packageFolder/bin/-debug.apk
hsmith$ ndk-gdb adb --start
错误:包不可调试!您可以通过两种方式解决此问题:
调用 'ndk-build' 时使用 NDK_DEBUG=1 选项重建。
修改清单以将 android:debuggable 属性设置为“true”,
然后正常重建。
在其中之一之后,重新安装到设备上!
我解压apk文件找到
解压后的apk文件/lib/target/
hsmith$ ls -la
总计 48264
drwxr-xr-x 12 hsmith 员工 408 8 月 25 日 14:50。
drwxr-xr-x 5 hsmith 员工 170 8 月 25 日 14:50 ..
-rwxr-xr-x 1 hsmith 员工 409940 Jun 3 11:47 gdbserver
-rwxr-xr-x 1 hsmith 员工 33920 8 月 25 日 14:44 lib1.so
-rwxr-xr-x 1 hsmith 员工 165092 8 月 25 日 14:44 lib2.so
-rwxr-xr-x 1 hsmith 员工 1614028 8 月 25 日 14:44 lib3.so
注意没有 gdb.setup 文件
我不在清单中使用 debuggable=true ,因为不再需要它,但是包括它对结果没有影响。
更新: https ://code.google.com/p/android/issues/detail?id=183455 这正是我遇到的问题。如果将目标 gdb.setup 文件从目标目录复制到 ./lib 目录,则可以使 ndk-gdb 工作;ndk-gdb 中的 COMPAT_ABI 变量设置不正确,并将脚本发送到旋转中。我希望他们尽快解决这个问题。几乎三天的时间都浪费在了一条损坏的工具链上。