[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文章中的第二种方法来实现的。
目录
相关文章
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
875 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
存储 API Android开发
深入剖析Android四大组件(四)——Messenger实现Android IPC
深入剖析Android四大组件(四)——Messenger实现Android IPC
306 2
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
|
监控 前端开发 Java
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
576 0
|
XML 开发工具 Android开发
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
476 0
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
|
Android开发
Android自定义控件(七)——ShapeDrawable实现放大镜效果
Android自定义控件(七)——ShapeDrawable实现放大镜效果
756 0
Android自定义控件(七)——ShapeDrawable实现放大镜效果