用例就是這樣。我爲企業編寫定製應用程序。這些應用程序是專有的,由於各種原因不適合Android Market。某些客戶要求應用程序定期自動聯繫公司服務器以檢查更新,並在需要時自動下載並安裝它們。我有一個這樣做的工作機制,但它不像我想的那樣健壯。最好的解決方案是在設備上運行應用程序,將其Android版本代碼(可能是VersionName)傳遞到服務器,在服務器上將這些代碼與服務器上潛在的升級.apk版本代碼進行比較。只有當服務器上的.apk代表升級時,它纔會上傳到設備並安裝。如何從Android環境以外的.apk文件中獲取Android versionCode&versionName?
發佈了很多建議的解決方案。一個常見的方法是在包含versionCode和versionName的服務器上放置一個單獨的文本文件,但可能會通過管理錯誤使該文本文件與.apk文件中的值不同步。結果將是不斷下載和不必要的下載。其他各種解決方案,例如使用apktool或其任何包裝器,雖然可行,但還有其他缺點。
我正在尋求解決方法,但似乎都涉及持續關於最近下載和安裝的.apk文件(例如校驗和)的一些附加信息。這些信息可以傳遞給服務器並進行比較。這可以起作用,但它不是我想要的那麼幹淨。
我正在尋找一個庫.jar文件,該文件將允許從.apk文件中提取versionCode和versionName。基本上會傳遞代表.apk文件位置的File對象,並提供獲取versionCode和versionName的方法。
其他建議將受到歡迎。