[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文章中的第二種方法來實現的。
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
- Android 之夜間模式(多主題)的實現思路Android模式
- Toast 元件實現思路AST元件
- promise基本實現思路Promise
- weex 原始碼解析(一) — 整體實現思路(Android視角)原始碼Android
- weex 原始碼解析(一) -- 整體實現思路(Android視角)原始碼Android
- android 自定義ScrollView實現背景圖片伸縮的實現程式碼及思路AndroidView
- Android:Fragment懶載入的實現以及自己的封裝思路AndroidFragment封裝
- 呼叫通訊錄實現思路
- 瀑布流程式碼實現及思路
- 一種跳板機的實現思路
- JavaScript依賴注入的實現思路JavaScript依賴注入
- MapReduce實現倒排索引(簡單思路)索引
- Android高速下載器實現思路——單個任務的提速與優化Android優化
- UIColletionView瀑布流佈局實現思路以及封裝的實現UIView封裝
- AR 導航的幾種實現思路
- iOS 抽獎輪盤效果實現思路iOS
- mysql 無限級分類實現思路MySql
- 從0到1實現VueUI庫思路VueUI
- 利用 DB 實現分散式鎖的思路分散式
- YYImage 設計思路,實現細節剖析
- 自動化報警的實現思路
- 分散式鎖的幾種實現思路分散式
- 微信語音連播的實現思路
- 實現動態驗證碼的思路
- MySQL 資料高可用的實現思路MySql
- Yearning外接工單通知實現思路
- Android 模組化探索和實踐(1):基本思路Android
- 談談 Promise 以及實現 Fetch 的思路Promise
- 簡版排程中心搭建及實現思路
- Web列印外掛實現思路(C#/Winform)WebC#ORM
- 基於大疆無人機全景拍照的實現思路無人機
- 實現動態表單的一種思路
- Flutter 2.2.X 版本熱修復實現思路分享(Android+Flutter混開專案)FlutterAndroid
- 關於TornadoFx和Android的全域性配置工具類封裝實現及思路解析Android封裝
- Android 動畫實現Android動畫
- WIN10UI—實現思路分享及程式碼Win10UI
- 前端另一種多語言的實現思路前端