android 某些软件包的adb备份失败-仅创建47字节

q1qsirdb  于 2023-01-11  发布在  Android
关注(0)|答案(2)|浏览(308)

我喜欢创建备份的想法,而不需要任何其他工具,也不需要根-所以"adb备份"似乎是完美的解决方案。
但由于一些奇怪的原因,它只为一些应用程序创建了几乎空的备份。
我使用的命令是:

adb backup -f ${APP}.ab -apk -share -nosystem ${APP}

我的应用程序中大约有50%受到了影响。我看不到任何规律。这既不是付费应用程序,也不取决于它们是来自playstore还是FDroid。这可能是什么原因?
我在我的ubuntu linux机器上使用了这个:Android调试桥版本1.0.39版本1:8.1.0 + r23 - 5ubuntu2安装为/usr/lib/android-sdk/平台工具/adb
测试不同参数-无变化。
我创建了一个脚本,为每个用户应用程序创建备份(所以跳过这些在priv-app和系统文件夹)。也许这对其他人有用。一个完整的备份不是很有用,因为没有命令来恢复备份的选择-全部或什么都没有。脚本有两个问题:

  • 并非所有应用程序都有备份
  • 每个应用程序都需要解锁(手机提示确认)

为了创建一个列表,我使用了以下命令:

adb shell pm list packages -f | grep -v priv-app | grep -v '/vendor' | grep -v '/system' | rev | cut -d = -f 1 | rev | sort

编辑:

我想我可以找到原因。在每个APK中都有一个AndroidManifest.xml文件,可以/必须(?)有一个设置:* * 安卓系统:允许备份**
是否允许应用程序参与备份和还原基础结构。如果将此属性设置为false,则永远不会执行应用程序的备份或还原,即使执行完整系统备份也是如此,否则将导致通过adb保存所有应用程序数据。此属性的默认值为true。
真扫兴!我认为有两种方法可以解决这个问题。要么在手机上修改(这可能是不可能的,或者需要root),要么在安装前修改。如果能成功的话,我想每次更新后都要重复。
有人有解决方案吗?没有root/google云的备份是可能的吗?

sqxo8psd

sqxo8psd1#

您可以按照以下步骤操作:
1.复制应用程序的apk从设备到你的计算机
1.使用apktool(使用"d"选项)反编译apk
1.修改AndroidManifest.xml中的allowBackup属性并将其设置为true
1.再次使用apktool重新编译应用程序(这次使用"b"选项)
1.安装重新编译的应用程序
1.使用您发布的adb命令执行备份

q5iwbnjs

q5iwbnjs2#

我花了很多时间在寻找一种方法来做到这一点,可以肯定地说:
在2023年的最新android版本(12和13)中,没有root用户就无法备份应用数据,甚至前面提到的apktool方法也不起作用,因为android现在使用的是签名apk。
即使您尝试使用自定义证书/密钥库绕过此问题,您也需要卸载原始应用程序,然后应用程序数据肯定会消失。

相关问题