1.反編譯
命令:apktool d <test.apk> -o?<folderdir>
其中:test.apk是待反編譯文件的路徑,folderdir是反編譯后的文件的存儲位置。
apktool d -f <test.apk> -o?<folderdir>
注意:如果dir已經存在,會提示報錯,此時加上參數-f會強行覆蓋dir。
舉例:apktool ? d /Users/admin/test.apk -o /Users/admin/Desktop/folderdir
2.編回apk 重新打包
apktool b /Users/admin/Desktop/folderdir
3.重新簽名,生成apk
jarsigner -verbose -keystore 你的簽名文件 -storepass 簽名文件密碼 -signedjar 簽名后的apk名稱 -digestalg SHA1 -sigalg MD5withRSA 待簽名的apk 簽名文件別名
jarsigner -verbose -keystore /Users/admin/Desktop/test.keystore -storepass test -signedjar /Users/admin/Desktop/folderdir/dist/1test.apk -digestalg SHA1 -sigalg MD5withRSA /Users/admin/Desktop/folderdir/dist/1019033_gtyxsjtest2_37_fanshenghao_1688031872bPeBJZETdV.apk test
4.命令輸入控制臺log(有時候 as 控制臺總是丟日志,用這個命令不會出現)
adb logcat ->/Users/admin/Desktop/jspanhskd.log
5.查看這個包名帶 jp 的進程
adb shell ps | grep jp
6.殺死手機某個進程
adb shell am force-stop packagename
例子:adb shell am force-stop com.pm.tcl
7.查看activity的調用棧信息
adb shell dumpsys activity | grep "topActivity"
8.查看Activity組件信息
adb shell dumpsys activity activities
9.查看Service組件信息
adb shell dumpsys activity services
10.查看ContentProvider組件信息
adb shell dumpsys activity providers
11.查看BraodcastReceiver信息
adb shell dumpsys activity broadcasts
12.查看Intent信息
adb shell dumpsys activity intents
13.查看進程信息
adb shell dumpsys activity processes
14.查看設備abi,海思芯片是32位還是64位
adb shell getprop ro.product.cpu.abi
15.輸出各階段發生的動畫與幀相關的信息
adb shell dumpsys gfxinfo <PackageName>
16.查看每個activity啟動耗時 在Android Studio Logcat中過濾關鍵字“Displayed”
17.?應用的啟動時間
命令:?adb shell am start -W com.jo.cl/com.jo.cl.SplashActivity
ThisTime
表示最后一個Activity啟動耗時。
TotalTime
表示所有Activity啟動耗時。
WaitTime
表示AMS啟動Activity的總耗時。
一般來說,只需查看得到的TotalTime,即應用的啟動時間,其包括 創建進程 + Application初始化 + Activity初始化到界面顯示 的過程。
18.aab并不能直接安裝到手機,因為apk是唯一的安裝包格式,所以需要先將aab轉成apks,我們需要借助bundletool工具,bundletool的使用見官網???????https://developer.android.com/studio/command-line/bundletool
? a. 通過 brew?安裝bundletool? ?
? ? ?命令:brew install bundletool
? b. aab 生成 apks? ?
命令:bundletool build-apks --bundle=<test.aab>?--output=<test.apks>?--ks=<test.jks>?--ks-pass=pass:<密碼> --ks-key-alias=<別名>?--key-pass=pass:<密碼>
舉例:bundletool build-apks --bundle=/Users/admin/Downloads/test.aab -- output=/Users/admin/Desktop/test/wscq.apks --ks=/Users/Project/test.jks --ks-pass=pass:android --ks-key-alias=test --key-pass=pass:android
? ?c. ?安裝 apks 到手機
命令:?bundletool install-apks --apks trunk_release_signed.apks
19.獲取apk 簽名信息
命令:keytool -keystore <keystore文件> -list -v
舉例:keytool -keystore /Users/Project/test/keystore/test.keystore -list -v
20.獲取手機內apk包中的緩存文件
命令:adb pull <緩存文件路勁> <輸出路勁>
例子:adb pull /sdcard/android/data/com.pm.test/files/test_logs/Log_2023_08_04.log /Users/admin/Desktop
21.查看apk安裝目錄
命令:?adb shell pm path packagename
22.mac?查看 jdk 安裝路勁
命令: ?/usr/libexec/java_home -V
23. android studio?查看依賴樹
chmod +x gradlew
命令:?./gradlew :app:dependencies