提取apk并与更新合并,然后安装新的apk

时间:2016-08-20 12:10:31

标签: android

首先,当你手机上的应用程序和这个应用程序在Play商店有更新时,谷歌只返回更新的代码部分而不是整个包(例如3毫克而不是8毫克,这是整个包的大小)。我研究并发现在Android方面,谷歌播放提取本地应用程序并合并从Play商店下载的更新文件并生成新的apk然后安装新的apk以及更新。考虑到Play商店没有apk密钥库来签署新的apk,但apk安装成功。 现在,我有一个应用程序从我的服务器下载更新的apk。服务器检测两个apks之间的更改,并仅返回已完成的更改。现在,在android端我希望我的运行应用程序提取本地apk并将其与更新合并并生成新的apk(如播放商店)。它也应该签署新的apk但它不应该把我的密钥库放在用户端文件中。 我最近在Windows中解压缩了一个apk文件,并从另一个apk添加了一些文件。这两个apks都已签名。在我的手机中放置了新的apk。但Android无法安装该应用程序并说“应用程序无法安装”。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

应用无法修改自己的APK。 apk文件只能为用户system写入,因此非root用户设备上的常规应用程序无法更新或修改自己或任何其他apk。

唯一的方法是在SD卡上保存到apk然后触发应用程序的侧载,以便用户可以选择安装它。但AFAIR需要激活设备才能安装来自未知来源的应用程序" (默认情况下禁用)。

签名:APK签名包含一个文本文件,其中包含APK中包含的每个文件的哈希值以及该文本文件的签名。

因此,如果你有两个APK:一个旧的APK和一个新的APK都正确签名,你在旧的和新的之间提取更改(包括带有哈希的文本文件及其签名),以及将提取的更改应用于旧的apk"更新的旧apk"将不会按位相同,但它具有相同的内容。因此签名将再次有效。