手机改成debug模式小工具及adb脚本问题

手机改成debug模式小工具及adb脚本问题

最近在用ddms调试的时候,需要将手机改成debug模式,然后就在网上找了点资料,不尽人意,东拼西凑,在看雪论坛中搞到了一个小工具。然后要求弄成傻瓜式,就写了个脚本,发现普通终端命令有几个坑,这里就来记录一下。

DDMS调试没有apk进程信息

工作的时候需要用到ddms或者monitor对apk进程进行调试,使用模拟器的时候还好,但是当用真机进行调试的时候,发现很多时候并不能显示出apk进程的信息,如下图所示。
这里写图片描述
出现这种原因呢,有两个解决的方法,一种是修改apk,把它的xml文件的一个属性改成debug模式,这样就能在ddms上看到了,很多人在开发Android的时候,都会把这个属性开启,这样方便调试。当然,在开发之后到应用市场上架的时候,为了安全起见,很多开发人员也会把这个功能关闭掉的。所以有的时候这个路子并不是万能的,当我们需要调试别人的apk的时候(有的时候一定要真机调试),就不太好更改apk的这个属性,这个时候就需要第二种方法来解决这个问题。第二种方法就是把手机改成debug模式,这样所有的进程信息都显示出来了。怎么看手机是不是debug模式?在adb下,输入下面命令就可以查看到手机的属性,如果值为1则表示当前手机处于debug模式。

adb shell
getprop ro.debuggable

修改debug模式小工具

亲自试了几种工具和方法,最后在看雪论坛上这个贴子上找到了一个很好使的小工具。亲测有效,在下面的评论上有写如何使用,有需要的就自己去下载一下即可。使用工具后,用getprop查看手机属性,果然已经修改好了。
这里写图片描述
小tip:
1、手机在修改好debug属性后,有的时候需要重新拔插或重新启动ddms,才能显示出所有apk进程;
2、手机关机重启后,该debug性能失效,需要重新运行该工具;

Python编写终端命令脚本

因为要实现傻瓜式操作,所以写了一个python脚本,基本思想就是将终端中输入的各种命令封装一下,脚本的基本框架如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import subprocess
import os
import 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 stdout

if __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!完成!下次写脚本的时候可以尝试一下:-)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值