某一个特殊设备上的APP白屏无法打开,需要将数据库数据保留下来并导出,研究了几个方法最后得以获取数据。


方案1:通过run-as读取


进入shell,执行run-as + 包名,就可以直接以root权限进入该应用的沙盒中查看包括数据库、xml、各种信息文件。接下来可以通过pull或者copy命令将需要的数据转移至PC中

adb shell
run-as package-name

注:应用需为debug模式,即AndroidManifest.xml文件中,android:debugable需要为true

android:debuggable="true"

如果为正式应用会报错,这个时候可以采用我们的第二种方式获取数据
 

run-as package: not debuggable

方案2:通过adb backup备份

 使用命令,此时手机会出现备份弹窗,低版本可以不输入密码,高版本需要输入密码,这个密码在备份完成后解压时需要用到。
 

adb backup -all -f D:\abcd.ab pagename
或
adb backup -nosystem -f D:\abcd.ab pagename

解释下这条命令
 

1> [-system|-nosystem]
默认是-system,这个指令是告诉adb 在备份时是否要连同系统一起备份
建议 -nosystem是一定要打上的指令
2> -all
是否要备份全部的APP 若有加上-nosystem的指令

3> [-apk|-noapk]
默认是-noapk ,是否连安装的APK一起备份

4> [-shared|-noshared]
默认是-noshared 是否连手机储存空间或是SD卡的档案一起备份


​​​​​​​备份完成后是一个.ab文件,需要下载一个abe工具进行解析
​​​​​​​
什么是.ab文件
.ab 后缀名的文件是 Android 系统的备份文件格式,它分为加密和未加
密两种类型,.ab 文件的前 24 个字节是类似文件头的东西,如果是加密的,在前 24 个字节
中会有 AES-256 的标志,如果未加密,则在前 24 个字节中会有 none 的标志
#android-backup 项目
https://github.com/nelenkov/android-backup-extractor

java -jar abe.jar unpack D:\abcd.ab D:\aaa.tar

解析完成之后直接解压即可。

如果出现生成的ab文件只有1KB,可能是版本问题,换一个版本的ADB试试。最新的不一定适合。
安卓7以下一般用1.0.31; 安卓9/10(各种机子有的64位有的32位)的1.0.31、1.0.32、1.0.36 有的可以有的不行。各个版本多试试看
我使用的4.4.2的机器,1.0.32也是可行的,1.0.31实在没找到,都是挂在CSDN上收积分了,我的32也挂出来了,0积分,需要自取。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐