Android NDK 错误:无法提取包的数据目录。您确定您安装的应用程序可调试吗?

Android NDK 错误:无法提取包的数据目录。您确定您安装的应用程序可调试吗?

我正在使用 Eclipse 调试具有 C 本机代码的 Android 应用程序。

当我插入我的 Nexsus4 时,NDK 外部调试工具就可以工作了。

当我插入我的 Galaxy Note2 时,它在尝试连接到设备时抛出以下错误:

Android NDK installation path: /Users/eladb/MyWorkspace/android-ndk-r8b
Using specific adb command: /Users/eladb/MyWorkspace/sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.31
Using ADB flags: 
Using auto-detected project path: .
Found package name: com.myPack
ABIs targetted by application: armeabi
Device API Level: 18
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Using gdb setup init: ./libs/armeabi/gdb.setup
Using toolchain prefix: /Users/eladb/MyWorkspace/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi
Found debuggable flag: true
Found device gdbserver: /data/data/com.myPack/lib/gdbserver
ERROR: Could not extract package's data directory. Are you sure that
       your installed application is debuggable?

我已启用开发人员选项并允许通过 USB 进行设备调试。

它不适用于我的三星 Galaxy Note2(Android 4.3),但适用于 Nexsus4(4.2)。

我认为这是一个众所周知的问题问题,但我该如何解决这个问题?

答案1

您是否服用过看看评论#29

对于 NDK r9:

在 ndk-gdb 中找到此行:

run adb_cmd shell run-as $PACKAGE_NAME lib/gdbserver +$DEBUG_SOCKET --attach $PID &

用以下 4 行替换它(假设您已经定义了 $NDK,并且假设您的目标设备是 ARM):

run adb_cmd forward tcp:5039 tcp:5039 run adb_cmd remount run adb_cmd
push $NDK/prebuilt/android-arm/gdbserver /system/bin/gdbserver.temp
run adb_cmd shell /system/bin/gdbserver.temp --attach :5039 $PID &

我是根据上面的记忆进行的,并没有真正测试我刚才写的内容,因此对于任何错误我深表歉意,但这就是总体思路。

再次强调,这需要 root 设备。

相关内容