自动化adb push新大陆N900测试 | 程序小兵

自动化adb push新大陆N900测试

本文目标:当修改代码时,会自动无间隙完美push进N900的机器,方便快捷,妈妈再也不用担心我加班了。

基础知识

新入手的新大陆 N900 的开发工程机,安装了银商总公司提供的UMSDesktop_trunk_032502.apk的主控程序后,进去都是空白的。这时需要把业务代码push进去。用到的工具是Androidadb,有安装开发环境的朋友,可以在sdk路径下(E:\java\adt-bundle-windows-x86_64-20130522\sdk\platform-tools)找到adb.exe的程序,然后添加到系统环境变量就可以在dos命令行窗口使用了,添加后,可以打开dos,输入 adb,查看是否OK。

熟悉几个简单的命令:

H5远程真机调试:

  1. chrome上面远程调试地址:chrome://inspect/#devices
  2. 选中inspect后点设置,关闭缓存

常用ABD命令:

adb install -r <apk file address> ##安装APK 
adb shell ##进入Android Linux内核
adb logcat -v time > ums.log ##无IDE情况下抓日志 
adb push  <文件夹地址> <终端内部目标文件夹地址> ##从外部压入文件至终端
adb pull  <终端内部目标文件夹地址> <文件夹地址> ##从终端提取文件  
adb devices ##获取已链接的Android设备列表 

常用linux命令:

cd xxx ## 切换
ls ##查看文件夹下所有文件
rm -rf XXXX ## 删除某个文件夹
mv XXX  xxx ##删除某个文件夹

为了测试-N900

N900的机子的业务内容是push到Android内核中的/Share/UmsTssMaster/resource,主控加载8位长度的序列文件夹,如0000000100000002……每个文件夹对应一个大业务类型,如果新增新的业务,则在此目录下新建一个递增序号的目录即可mkdir 00000003。如下:

adb shell ## 进入Android内:
cd /Share/UmsTssMaster/resource ##切换至resource目录
mkdir 00000003 ## 新建 00000003,若存在,则递增

退出adb shell,切换为windows dos命令行窗口,将你的代码push进去
adb push d:\bankcard /Share/UmsTssMaster/resource/00000003/

为了偷懒(为了效率)

每次修改js代码,要烧进N900的机器时,总是在dos敲几条命令:

虽然,手动敲下,也很方便,但是在频繁修改 adb push 就显得有些劳累,有无自动管理办法,当我每次modify时,一保存,就帮我把最新的代码push进机子中,我立马就可以测试。原本找些windows的bat处理命令来整,N久没玩过bat了,生疏的到完全不会。于是乎从Linux入手,后来Linux上也有些难搞,毕竟我的机子是Windows PC。大脑的深处告诉我,Python很适合造这种类似的工具。于是根据自己的需求:

每当我指定的目录下的文件发送改变时(增、删、改),就调用我指定的命令(原初只是想执行个adb push把代码push进去Android内核,现在觉得,好像可以推广到其他,太被自己的智商佩服了,略)


首先

确保自己的电脑正常USB连接到N900的Android内核,可以尝试使用 adb shell 命令进入内核与adb devices命令查看设备连接是否Ok.


其次

确保自己的电脑有了Python的开发环境(其实就安装下Python,我想作为开发者,应该有的)


三次

将下面的Python代码存放在某个文件目录下,保存为push.py,后缀名为.py,本人放于E:\easyLink\h5_U

## author: Panjie.Yan
## blog  : ittomato.github.io
## time  : 2016-5-12
## brief : 自动监控文件变化并执行命令
import os
import win32file
import win32con
ACTIONS = {
  1 : "Created",
  2 : "Deleted",
  3 : "Updated",
  4 : "Renamed from something",
  5 : "Renamed to something"
}
# Thanks to Claudio Grondi for the correct set of numbers
FILE_LIST_DIRECTORY = 0x0001
path_to_watch = "."
hDir = win32file.CreateFile (
  path_to_watch,
  FILE_LIST_DIRECTORY,
  win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE,
  None,
  win32con.OPEN_EXISTING,
  win32con.FILE_FLAG_BACKUP_SEMANTICS,
  None
)
while 1:
  # 循环
  results = win32file.ReadDirectoryChangesW (
    hDir,
    1024,
    True,
    win32con.FILE_NOTIFY_CHANGE_FILE_NAME |
     win32con.FILE_NOTIFY_CHANGE_DIR_NAME |
     win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES |
     win32con.FILE_NOTIFY_CHANGE_SIZE |
     win32con.FILE_NOTIFY_CHANGE_LAST_WRITE |
     win32con.FILE_NOTIFY_CHANGE_SECURITY,
    None,
    None
  )
  for action, file in results:
    full_filename = os.path.join (path_to_watch, file)
    print full_filename, ACTIONS.get (action, "Unknown")
    os.system('adb push E:\easyLink\h5_U\slt-term /Share/UmsTssMaster/resource/00000003/')
    print '-------------adb push ok-------------'

Last but one

修改

os.system('adb push E:\easyLink\h5_U\slt-term /Share/UmsTssMaster/resource/00000003/')

里的代码,将E:\easyLink\h5_U\slt-term换为你本地的源码路径, 00000003也换为你相应的子模块文件名。修改目标文件,可以更细化的push目录,这样每次push速度就更快了,毕竟很多基础文件是没做修改的,就无需频繁push了。


最后

打开dos,cd切换至E:\easyLink\h5_U,执行命令python push.py


曙光

执行结束后,看到

-------------adb push ok-------------

则表明已经Ok了,接下来就用chrome://inspect/#devices。尽情的造bug吧。


Tips

第一次把biz-xxx的业务push进去后,主控室页面是没有显示的,此时需要退出主控(有个隐藏的技能,我想大家都知道,这里就不方便贴出来了),回到Android原生界面==>设置==>应用==>智能桌面Upos,进入Upos,清除数据、清除缓存后重新进入智能桌面。主控重新加载就会解析出刚push进去的新的业务了。


(完)

文章目录
  1. 1. 基础知识
    1. 1.1. H5远程真机调试:
    2. 1.2. 常用ABD命令:
    3. 1.3. 常用linux命令:
  2. 2. 为了测试-N900
  3. 3. 为了偷懒(为了效率)
    1. 3.0.1. 首先
    2. 3.0.2. 其次
    3. 3.0.3. 三次
    4. 3.0.4. Last but one
    5. 3.0.5. 最后
    6. 3.0.6. 曙光
    7. 3.0.7. Tips
,