2016-08-20 92 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」不會按位相同,但它具有相同的內容。因此簽名將再次有效。