[android]MonkeyRunner-andrec实现思路

1.使用Apktool.jar反编译某个APK 命令为:java -jar apktool.jar d -d -f TestRecord.apk /tmp/tmpVpJYTg 

2.分析AndroidManifest.xml文件得到APK的mainActivity名 

2-3中间会分析smali目录下的R$id.smali文件,获取到APK的包名,并且可以拼到com.example/.TestRecordActivity类似的monkeyrunner所需要的启动包名称,还可以获取到所有的静态在xml中的layout元素id以及name的map关系 

3.使用java -jar apktool.jar b -d -f /tmp/tmpVpJYTg /tmp/tmpVpJYTg/out.apk重新打包APK,输出out.apk文件 

4.给out.apk重新签名,jarsigner -verbose -keystore debug.keystore -storepass andrec -keypass andrec /tmp/tmpVpJYTg/out.apk andrecdebugkey 

5.重新优化APK提高APK与android系统的交互效率/home/eamon/android-sdk/android-sdk-linux_x86/tools/zipalign -v -f 4 /tmp/tmpVpJYTg/out.apk /tmp/tmpVpJYTg/out-aligned.apk,优化后得到out-aligned.apk文件 

6.开启debug主activity,使用命令:/home/eamon/android-sdk/android-sdk-linux_x86/platform-tools/adb shell am start -D -W -n com.example/.TestRecordActivity(这里通过分离文件得到文件内相应的方法来获取如何debug某一个方法例如onclick)此命令可以启动某一个activity 

6-7之间需要知道的adb jdwp获取手机内TestRecord应用的PID,此时再利用adb shell ps 以及刚刚获取到得APK包名,确认这个PID 

7.链接远程debug手机端android虚拟机 

connecting debugger... 
DEBUG:root:/home/eamon/android-sdk/android-sdk-linux_x86/platform-tools/adb forward tcp:3977 jdwp:632 
其中adb forward实现原理为socket通信,虚拟机内debug信息会通信给本机3977端口 

下面解析Record是如何制作的: 
record的制作是借取了adb shell am 的debug方法,加之jdb的远程调试,见我的android栏中的jdb相关文章 

andrec实现中遇到的断点debug中采用的是http://blog.csdn.net/ariesjzj/article/details/7393573文章中的第二种方法来实现的。

时间: 2024-08-25 14:06:20

[android]MonkeyRunner-andrec实现思路的相关文章

[Android]Monkeyrunner得id查找方法

该方法是莹莹同学发现得,先感谢.  实现方式如下: from com.android.monkeyrunner import MonkeyRunner as MR from com.android.monkeyrunner import MonkeyDevice as MD from com.android.monkeyrunner import MonkeyImage as MI from com.android.monkeyrunner.easy import EasyMonkeyDevic

[android]MonkeyRunner“java.net.SocketException: Broken pipe”错误解决办法

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice import time import random d=MonkeyRunner.waitForConnection() d.wake() for i in range(0,100): #TOUCH|{'x':55,'y':795,'type':'downAndUp',} d.startActivity(action='android.intent.action.MAIN

Android monkeyrunner自动化测试

monkeyrunner测试主要是通过编写一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上.由于SDK是旧版本,暂时无法获取自定义屏幕上的组件焦点,所以通过截取屏幕的方式获取组件的位置坐标,然后利用触摸的方式点击组件. 关于monkeyrunner自动化测试网上的例子太多了,而且都是转载的,基本上都是对官方文档的翻译,所以遇到很多问题都无法解决.下面附上一些简单的例子. #导入程序测试所需要的模块 from co

Android Monkeyrunner Test

关于Android自动化测试,研究了Monkey,Robotium 这次来看下 Monkeyrunner. 具体实践最靠谱的当然还是官网资料了. http://developer.android.com/tools/help/monkeyrunner_concepts.html 这里简单记录下实践过程,Monkeyrunner 需要用Python来编写,对于曾未学过Python的童鞋来说也没关系,因为Python属于比较好学的一门脚本语言.笔者也未曾学过Python,但有其他编程基础如:PHP,

Android Metro菜单实现思路及代码_Android

今天继续说一下安卓的菜单,之前介绍了:相信大家对于Metro风格并不陌生,下面就在安卓平台上实现一下这个效果,如图:  实现思路: 利用动画来实现移动的效果,使用的是TranslateAnimation这个方法.先看一下布局文件: activity_main.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://s

Android Metro菜单实现思路及代码

今天继续说一下安卓的菜单,之前介绍了:相信大家对于Metro风格并不陌生,下面就在安卓平台上实现一下这个效果,如图:   实现思路: 利用动画来实现移动的效果,使用的是TranslateAnimation这个方法.先看一下布局文件: activity_main.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://

android获取屏幕像素思路及代码_Android

复制代码 代码如下: <SPAN style="FONT-SIZE: 18px">private void alertScreenDialog() { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); String optStr = "手机屏幕分辨率为: "+dm.widthPixels+" x &qu

android获取屏幕像素思路及代码

复制代码 代码如下: <SPAN style="FONT-SIZE: 18px">private void alertScreenDialog() { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); String optStr = "手机屏幕分辨率为: "+dm.widthPixels+" x &qu

[android]android自动化测试十三之monkeyRunner自动化框架

1.MonkeyRunner自动化遇到的问题 一.元素坐标不好定位 二.不利于代码复用 三.出现问题不好调试 四.无封装大量多余代码  针对以上四点问题,尝试了一些自动化测试框架,虽不尽如意,但是也把成果展示如下:  1.制作一个应用,该应用可以得到你应用上所点击的IP $ ./andrec --help Usage: andrec [options] apkfile Options: --version show program's version number and exit -h, --

Android测试教程(16):monkeyrunner简介

如果你需要实现自动测试,Android的monkeyrunner 工具可以帮助你实现自动测试,它提供了一组API可以用来控制Android设备或模拟器,使用monkeyrunner,你可以编写Python 程序来安装Android应用或是测试包,运行应用或测试,发送按键消息,并可以截屏,然后保存在计算机中.monkeyrunner 主要目的是用来在应用程序或框架层次来测试应用程序或运行单元测试包,但你也可以用作其它目的. monkeyrunner 工具包不同于UI/Application Exe