作者:开心果娟娟 | 来源:互联网 | 2023-09-13 19:58
手机改成debug模式小工具及adb脚本问题最近在用ddms调试的时候,需要将手机改成debug模式,然后就在网上找了点资料,不尽人意,东拼西凑,在看雪论坛中搞到了一个小工具。然后
手机改成debug模式小工具及adb脚本问题
最近在用ddms调试的时候,需要将手机改成debug模式,然后就在网上找了点资料,不尽人意,东拼西凑,在看雪论坛中搞到了一个小工具。然后要求弄成傻瓜式,就写了个脚本,发现普通终端命令有几个坑,这里就来记录一下。
DDMS调试没有apk进程信息
工作的时候需要用到ddms或者monitor对apk进程进行调试,使用模拟器的时候还好,但是当用真机进行调试的时候,发现很多时候并不能显示出apk进程的信息,如下图所示。
出现这种原因呢,有两个解决的方法,一种是修改apk,把它的xml文件的一个属性改成debug模式,这样就能在ddms上看到了,很多人在开发Android的时候,都会把这个属性开启,这样方便调试。当然,在开发之后到应用市场上架的时候,为了安全起见,很多开发人员也会把这个功能关闭掉的。所以有的时候这个路子并不是万能的,当我们需要调试别人的apk的时候(有的时候一定要真机调试),就不太好更改apk的这个属性,这个时候就需要第二种方法来解决这个问题。第二种方法就是把手机改成debug模式,这样所有的进程信息都显示出来了。怎么看手机是不是debug模式?在adb下,输入下面命令就可以查看到手机的属性,如果值为1则表示当前手机处于debug模式。
adb shellgetprop ro.debuggable 修改debug模式小工具
亲自试了几种工具和方法,最后在看雪论坛上这个贴子上找到了一个很好使的小工具。亲测有效,在下面的评论上有写如何使用,有需要的就自己去下载一下即可。使用工具后,用getprop查看手机属性,果然已经修改好了。
小tip:
1、手机在修改好debug属性后,有的时候需要重新拔插或重新启动ddms,才能显示出所有apk进程;
2、手机关机重启后,该debug性能失效,需要重新运行该工具;
Python编写终端命令脚本
因为要实现傻瓜式操作,所以写了一个python脚本,基本思想就是将终端中输入的各种命令封装一下,脚本的基本框架如下:
#!/usr/健康的紫菜/env python# -*- coding: utf-8 -*-import subprocessimport osimport sys#打印错误信息def printf_error_failed(message): failed = "\n\n================The shell is Failed!====================\n\n" print(failed) print("The reason is : " + message + "\n\n") exit(-1)#终端输入命令def execute_command(cmdstring): build = subprocess.Popen(cmdstring, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) (stdout, stderr) = build.communicate() build.wait() result = str(build.returncode) if result != "0": printf_error_failed("Error: the command " + cmdstring + " is failed!") return stdoutif __name__ == '__main__': print("======Begin to debug2phone!=======") #在这里输入你要实现的各种终端命令,多个终端命令用;符号隔开 execute_command("the shell you want ") print("======debug2phone is over!=======")
本来以前经常直接用这个脚本实现在终端中自动执行命令,结果这次在这里出现问题了。在使用这个修改debug的小工具中,需要输入adb shell命令,并需要进入root权限进行之后的操作(su),但是用python脚本执行的时候,它只能在adb shell命令执行完成并且返回一个结果之后,才能执行下一个命令的操作。那么问题就出来了,我们下一步的各种操作,并不是等到adb shell返回结果之后才执行的,而是进入adb shell中执行,因此这个脚本就失效了。
Python脚本实现adb等终端命令
查了一些资料,终于找到解决问题的方法了,很简单的操作。我们只需要将需要运行的终端命令,写在任意一个文件中(我用的是txt格式的文件),用回车分隔命令。然后在执行python的脚本的时候,使用链接文件的方式运行脚本即可。具体如下图所示:
这是需要运行的终端命令文件,phone.txt。
然后将上述的脚本稍微改一下,改成文件链接的形式,将之前保存好的phone.txt链接过去。
ok!完成!下次写脚本的时候可以尝试一下:-)