[android]MonkeyRunner-andrec实现思路
2023-09-14 08:56:50 时间
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文章中的第二种方法来实现的。
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开发之系统相机相册使用
- 安卓 android studio 报错 The specified Android SDK Build Tools version (27.0.3) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle
- [Android Traffic] android 流量计算方法
- [Android Pro] android 禁用和开启四大组件的方法(setComponentEnabledSetting )
- [Android Pro] Android权限设置android.permission完整列表
- Android中如何让手机屏幕不待机
- JAVA Eclipse如何开发Android的多页面程序
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
- 【已解决】unity4.2.0f4 导出Android工程报错:Error building Player: ArgumentException: Illegal characters in path. [unity导出android工程 报错,路径含有非法字符]
- android脚步---Itent.ACTION_PICK ,startActivityForResult
- Android 设置Button不可点击
- Android做分页加载的思路
- FFmpeg - Android 直播推拉流
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )
- Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)
- 2014 android毕设代做 代做Android毕设 安卓毕设
- 基于Android 下载文件时,更新UI简单帮助类
- 使用android快速开发框架afinal的FinalDb操作android数据库
- Appium - Android 对照 iOS
- Android动绘图标——I am not a gif maker,I am a developer
- 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
- Android学习笔记——关于onConfigurationChanged(转)
- Android的java的报错提示:Could not find com.android.tools.build:gradle:4.2.2.
- Android查看CPU和GPU使用率(五十五)