我正在尝试使用命令行和脚本工具来调试Android应用程序(我已经受够了Android Studio蚕食我的CPU)。
要连接到我的应用程序,我执行adb jdwp以获取pid,然后执行adb forward tcp:8700 jdwp:<pid>以能够连接到应用程序。但是我想写更多的脚本。
adb jdwp有两个限制: 1.它不返回,所以我必须用ctrl-c杀死adb;2.它只列出pids。如果有更多的pids,没有简单的方法来查看哪个是我的应用程序。
有没有一种方法可以让adb jdwp正常工作:让它退出并返回applicationId和pid?
发布于 2016-12-08 17:37:05
我设法用下面的脚本解决了这个问题(只要你的应用作为最后一个进程启动,这个脚本就可以工作)。作为未来的增强,它可以与gradle任务运行器集成,以进一步简化过程。
#!/bin/bash
DEBUG_PORT=7777
SOURCE_PATH=app/src/main/java
FILE=/var/tmp/andebug-$(date +%s)
adb jdwp > "$FILE" &
sleep 1
kill -9 $!
JDWP_ID=$(tail -1 "$FILE")
rm "$FILE"
adb forward tcp:$DEBUG_PORT jdwp:$JDWP_ID
jdb -sourcepath $SOURCE_PATH -attach localhost:$DEBUG_PORT发布于 2021-07-30 14:08:58
下面是一个示例脚本,与Struchu的脚本类似,但不写入本地文件
改进
#!/bin/bash PACKAGE="com.example.app“ACTIVITY= "$PACKAGE”/"$PACKAGE"".MainActivity“#通过wifi连接adb connect "$(ip r| grep default | cut -f3 -d\ )":5555 # adb -e连接到wifi设备并启动活动adb -e shell am start -D -n "$ACTIVITY”JDWP=$(adb -e shell ps | grep“$PACKAGE”| cut -f7 -d\ ) adb forward tcp:8000 jdwp:"$JDWP“jdb app/src/main/java -attach localhost:8000
https://stackoverflow.com/questions/39485653
复制相似问题