ADB 的全称是 Android Debug Bridge,就是起到调试桥的作用。
因为朋友看中了一款游戏,想要提取下更新后的资源,但是找不到这个游戏在手机中的文件夹位置。所以让我看下。
从结论来讲,文件夹位置找到了,并且也导出了这个文件夹的内容,但是更新文件的位置还是不清楚。。。也许这个更新直接合并到文件夹内了?并且只是单纯的替换资源?这个需要以后再研究下。
用到的工具:
- jadx-1.3.3:这个主要是解包看下包名
- mumu模拟器:安装 apk,因为模拟器默认就是 root 的貌似
- Android Studio:主要是为了用 adb (虽然也可以直接用电脑的 cmd 来启动 adb,不过我还是习惯通过 Android Studio 使用)
- apktool:解包 apk 资源用
1、首先想到是把游戏考到手机里找一下安装目录,一般游戏的更新路径都是在 /Android/data 里面,比如碧蓝航线、fgo 啥的,但是这个游戏就是找不到。。。所以需要查找下它的具体安装路径。
adb shell pm path 包名(com.xxx.xxx)
使用这个命令,可以查询到连接的安卓设备里对应包名的安装路径。
一开始我是用自己的手机装了下并且查询,也确实查到了,但是当导出的时候遇到了问题,就是需要手机 root 才可以,真机必须 root 后才能使用 adb 的 root 的指令,而我的手机是黑鲨,查了下资料这个手机 root 貌似挺麻烦,所以就没搞。
2、想了下以后,想到可以尝试下用模拟器来搞,结果还真可行。使用的就是mumu模拟器。
adb connect 127.0.0.1:7555
使用以上命令,就可以让 adb 连接到 mumu 模拟器。之后同样的方法查到了安装路径,跟实机里的一样。
这里还用到了一些命令:
// 进入 adb
adb shell
// 进入指定路径
// 如果使用 cd / 则是返回最外层路径
cd /data/app
// 查看当前路径下的详细信息
ls -l
3、之后就是导出了
// 这里前面的 /xx/xx/xx 是安卓系统中的要导出的文件的路径信息
// 后面的 F:\xx 是要导出到电脑中的位置,可以自己改
adb pull /xx/xx/xx F:\xx
以下为其他 adb 相关使用
1、 查看已连接的设备:
adb devices
2、将 logcat 的日志输出到指定文件中(参考文章)
// 首先执行清空命令,将之前的 logcat 日志信息清空
adb logcat -c
// 将 logcat 信息打印到指定位置的文件中,该位置需要是绝对路径
adb logcat > D:/logcat.txt
// 打印结束后使用 Ctrl + C 退出
如果需要输出特定 Tag 的日志,需要按照如下方法
"-s"选项 : 只显示指定标签的日志
// 其中 "Tag" 替换成要显示的 Tag 内容,引号是必须要带的
adb logcat -s "Tag" > D:/logcat.txt
// 例如,想输出 Tag = BannerTag 的日志
adb logcat -s "BannerTag" > D:/logcat.txt
// 想同时输出多个 Tag,只需要将相应的 Tag 使用引号加入即可
adb logcat -s "BannerTag" "RewardTag" > D:/logcat.txt
以上的日志输出方式只能输出特定 Tag
的日志,但是有时需要输出带有某个关键词的日志,此时,无法使用上述方式。
adb logcat | findstr "TAG" > D:/logcat.txt
以上指令可以输出所有带有 TAG
内容的标签的日志,例如:BannerTAG
、RewardTAG
等,可以不带引号。
需要注意的是:在 windows 系统中使用 findstr
,在 linux 系统中需要将 findstr
替换成 grep
。
PS:同时需要注意的是,最好是在 cmd 中使用此指令,在 Android Studio 中可能会由于配置还是什么原因导致无法输出信息。
3、使用 adb 安装 apk
adb -s (设备编号) install (apk 的绝对路径)
其中,设备编号是使用 adb devices
获取的。
需要注意的是,apk 的绝对路径中不能含有空格
,例如一个文件夹名为 Apk Files
在安装过程中会显示无法找到 Files
文件夹,应该将该文件夹命名为 ApkFiles
或 Apk_Files
。
C:\Users\Administrator>adb devices
List of devices attached
TPAKDXR1U7 device
上面代码中的 TPAKDXR1U7
就是该设备的设备编号,假设需要将 D 盘根目录的一个叫 Test.apk 的应用安装到该设备上,则代码如下所示:
adb -s TPAKDXR1U7 install D:\Test.apk