我可以从已安装的应用及其数据构建APK吗?


8

我想从一个有根的Android设备上获取一个已安装的应用程序,包括其数据,并从中产生一个适合在无根的Android设备上安装的APK。

这可能吗?

编辑:现有的答案/评论似乎强化了以下观点:现有应用程序不支持将应用程序的数据嵌入APK中。也许更根本的问题是,APK 是否可以嵌入预定用于的文件 /data/data/[appname],或者它们在安装时仅限于自包含?

笔记:

  • 我假设,如果可能的话,此功能将内置于Titanium Backup之类的应用程序中。Titanium Backup可以将应用程序+数据备份到一个文件中,但是该文件不是APK,只能由Titanium Backup本身还原-这对我没有帮助,因为目标设备没有植根,因此无法运行TB。
  • 需要使用电话或ADB上的终端的解决方案很好。

谢谢。


如果查看TB的备份文件夹,您会注意到它存储了.apk普通文件(因此至少可以使用该文件夹)。我需要查看数据文件;对,这只是存储的属性,但我不记得使用的格式。但是,出于与备份相同的原因,在非root用户的设备上还原数据可能非常困难:–无法访问数据文件夹...
Izzy

@Izzy TB有两种备份方法。它的普通文件在备份目录中存储了三个文件-一个包含APK的tar.gz,一个包含/ data / data / [app] /内容的tar.gz和一个包含我认为是哈希值的.properties文件文件。另一个选项(在“发送此备份”下->“轻松导入”下)写入单个.TiBkp文件,我相信其中包含普通的三个文件。正如您所说,无论哪种方式,都需要root访问权限才能将数据还原到/ data / data / [应用] /在目标设备上。
伊恩拉顿

是的 后一种格式旨在方便地传输到其他设备(感谢我从ES文件浏览器中向人们提到的该格式,该应用程序现在可以识别这些文件,并可以通过TB打开这些文件(如果已安装))。我宁愿指的是(未压缩的)数据包(XML,SQLite,SQL ...)的格式,以弄清楚如何处理这些数据包-中间,我记得目标是非root用户的... ,将其“定制转移”到另一个植根目标可能是一个有趣的想法。
伊齐

Answers:


3

现在,我已经阅读了有关APK文件格式的更多信息,我认为我现在可以安全地回答“不可能”了。

APK文件不包含在安装时会“解压缩”的数据结构,例如大多数Linux发行版所使用的软件包。相反,APK只是一个独立的,重新标记的JAR文件,其中包含应用程序的字节码,清单和证书,而没有其他内容。

的内容/data/data/[appname]大概是由应用程序代码在首次运行时(或在将来某个时候)创建的,并且无法将此类数据嵌入APK中,因此系统会在安装时自动将其移动到正确的目标位置。


APK仅包含字节码,清单和证书是不正确的。它还包含应用程序使用的所有资源和资产,但是在安装应用程序时它们仍保留在APK文件中:/data/data/除非将应用程序编程为自行执行操作,否则它们不会复制到其中。
Dan Hulme

1

您仍然可以使用ES File ExplorerAppMonsterTitanium Backup等应用程序获取应用程序的APK 。但是我不知道他们在构建APK时是否备份数据。


非root用户的应用程序几乎不能包含数据。AppMonster肯定不会这样做-至于Titanium,OP已经表示不符合他的需求。对于ES,我怀疑它会提取数据。
伊齐

我刚刚尝试过ES,它的备份也似乎不包含数据。(或者至少,当备份的APK安装在我的非根目录目标设备上时,我期望的数据不存在。)据我所知,ES的备份只不过是从/ data /复制APK而已。 / sdcard / backups的应用程序。
伊恩·伦顿

0

前往Play商店并下载ML Manager,以将Apk文件提取到您选择的文件夹中。我不知道如何在其中包含应用程序数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.