在调查本地代码中的断点问题时,我决定检查ndk-gdb是否正常工作。 我已经删除了app_process,启动了Javadebugging并运行了ndk-gdb --force
。 猜猜看,app_process没有创build。 ndk-gdb --verbose
输出有这样的一行:
## COMMAND: adb_cmd pull /system/bin/app_process obj/local/armeabi-v7a/app_process remote object '/system/bin/app_process' not a file or directory Pulled app_process from device/emulator.
我已经从目标设备卸载应用程序,重新启动设备,并重复。 仍然没有app_process。 所以,我不知道这里有什么问题,我也想知道什么时候创build了这个文件,以及什么过程/脚本。
如前所述,Android 5.0具有/system/bin/app_process
作为/system/bin/app_process
的符号链接。 由于不能使用adb pull
符号链接,因此ndk-gdb
脚本将无法按原样工作。
如下所示更改ndk-gdb
以支持api21更改以及向后兼容<api21:
# Get the app_server binary from the device APP_PROCESS=$APP_OUT/app_process if [ "$API_LEVEL" -lt "21" ] ; then run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS` log "Pulled app_process from device/emulator to $APP_PROCESS" else run adb_cmd pull /system/bin/app_process32 `native_path $APP_PROCESS` log "Pulled app_process32 from device/emulator to $APP_PROCESS" fi
编辑:或:
# Get the app_server binary from the device APP_PROCESS=$APP_OUT/app_process APP_PROCESS_DEVICE=app_process32 if [ "$API_LEVEL" -lt "21" ] ; then APP_PROCESS_DEVICE=app_process fi run adb_cmd pull /system/bin/$APP_PROCESS_DEVICE `native_path $APP_PROCESS` log "Pulled $APP_PROCESS_DEVICE from device/emulator to $APP_PROCESS"
原始更改也在这里: http : //pastebin.com/YfxNs06U 。 请注意,这个更改将app_process32
重命名为app_process
,以便在Eclipse中支持单个调试配置。
发现问题。 我的设备运行Android 5.0预览,app_process有一个名为app_process32的文件的符号链接。 所以拉app_process32工作正常。
除了紫罗兰长颈鹿的答案,交换脚本ndk-gdb的行
run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS`
同
run adb_cmd pull /system/bin/app_process32 `native_path $APP_PROCESS`
这解决了这个Android 5.0的问题,我能够像以前一样构建和调试。