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