2016-08-20 99 views
0

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

回答

0

应用程序无法修改其APK。 apk文件仅对用户system可写,因此在非根用户设备上的常规应用程序无法更新或修改其自己的或任何其他apk。

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

签名:APK签名包含一个文本文件,该文件包含APK中包含的每个文件的散列以及该文本文件的签名。

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