androidru使用adb启动activity和monkeyrunner启动activity

平常开发的时候我们经常遇到要开发一个新的界面,没有其他程序入口启动这个activity,几年前刚做android开发那会遇到这种情况就是直接把AndroidManifest.xml的activity主要入口更改为正在开发的入口,但是有个问题,有时候不小心把AndroidManifest.xml提交,导致同事更新代码后抓狂。第一反应就是adb启动,在很长一点时间里我一直用adb方式启动activity,去年偶然看到monkeyrunner脚本,发现也有方法启动activity,于是就写了一个脚本用于启动activity的开发场景。
一、用adb方式启动activity
android平台有一个am命令集合,其实就是ActivityManager的执行脚本,我们可以通过am命令来启动activity
命令如下:
$ am start -n com.package/com.package.name.ActivityName
与adb shell一起使用就是
$ adb shell am start -n com.package/com.package.name.ActivityName
还可以通过am命令给activity传参数,这里就不再继续讲解了。
二、monkeyrunner脚方式启动
monkeyrunner是基于python脚本的一个自动化测试工具,功能非常强大。
1. 使用MonkeyDevice的startActivity方法即可启动
sample.py
============================================
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
device=MonkeyRunner.waitForConnection();
# 注意name前面还有一个“.”符号,其实是相对路径的意思也可以component="com.package/com.package.name.ActivityName"
device.startActivity(component="com.lucky/.name.ActivityName")
将samply.py放到ANDROID_SDK/tools目录下,然后运行
$ monkeyrunner sample.py
等几秒钟,即可启动HelloActivity
注意: 一定要将脚本放到ANDROID_SDK/tools目录下,否则运行脚本会报错。

2. 步骤1只是一个简单的例子,实际开发中,我特地编写了一个启动脚本,只要输入应用packageName和activity名即可启动对应的activity,不需要每次都修改脚本,扩展性不好
完整的脚本
startActivity.py
========================================
import sys
if len(sys.argv) < 3 :
        print('Plase input Package Name and Activity Name')
        sys.exit(0)

pkgName=sys.argv[1]
actName=sys.argv[2]
actShortName=actName[(actName.rfind('.') + 1):]
myComponent=pkgName + '/' + actName

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
print('connecting device...')
device=MonkeyRunner.waitForConnection();
print('connect succeed.')
print('Ready to start Activity of \"' + actShortName + '\"')
device.startActivity(component=myComponent)
把startActivity.py放到ANDROID_SDK/tools目录下运行如下命令即可启动activity
$ monkeyrunner startActivity.py com.package com.package.name.ActivityName

3. 如果使用步骤2想传参数怎办,MonkeyDevice也可以传参数,只是太麻烦,而且不够灵活,开发中,一般在onCreate()后面加入测试变量就可以了。

三、adb VS monkeyrunner启动activity那个好
1. adb启动activity速度相对快一点,因为相比monkeyrunner少了connection的过程;
2. adb缺点就是设备的adb必须有root权限,而monkeyrunner只要能够连接adb就可以了,不需要额外权限。

结论:在adb有root权限的设备上我通常用回选择adb启动,开发能省时间就省时间。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值