某一个特殊设备上的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积分,需要自取。
|