2013-06-28 107 views
4

我正在發佈模式下構建Android應用程序。我第一次將它安裝在設備上時,它工作正常。但是,如果我從同一個源重建它,請使用相同的密鑰對其進行簽名,然後重新安裝,否則將失敗。我在日誌中看到以下錯誤:Android:「更新版本0比安裝版本舊」

W/InstallAppProgress(30456): Replacing package:com.mycompany.myapp 
W/ActivityManager(26370): No content provider found for permission revoke: file:///storage/emulated/0/Download/MyApp-17.apk 
W/PackageManager(26370): Can't install update of com.mycompany.myapp update version 0 is older than installed version 3 

應用程序的版本代碼設置爲3,兩次構建它。它在哪裏得到更新是「版本0」的想法?

更新:我在我的清單文件中有這個:android:versionCode="@integer/app_version_code"。我在res/values/strings.xml中定義了<integer name="app_version_code">3</integer>

我很確定這用於工作,但現在它似乎並沒有。如果我將@integer引用替換爲硬編碼的「3」,它就可以工作。不應該@integer be supported

+3

你可以發佈你的清單嗎? – Emmanuel

+1

你確定Manifest宣告了正確的versionCode? –

+0

檢查清單後更新了帖子。 –

回答

2

據我所知,沒有,你不能這樣做。

See this Google Groups discussionthis Stack Overflow question對於用ant build腳本實現類似結果的一些想法。

如果你看看Android documentation,它明確要求了,你可以使用的versionName的資源,但是他說,對於versionCode沒有這樣的事:

android:versionCode

內部版本數。此號碼僅用於確定 某個版本是否比其他版本更新,更高的號碼 表示更新的版本。這不是向用戶顯示的 的版本號;該數字由versionName屬性設置。

該值必須設置爲整數,例如「100」。只要每個後續版本具有更高的 數字,您就可以將其定義爲 。例如,它可能是內部版本號。或者,您可以通過編碼 「x」和「y」分別在低位和高位16位中將「x.y」格式的版本號轉換爲整數。或者,您每次發佈新版本 時,只需將該號碼增加1。

android:versionName

向用戶顯示的版本號。 可以將此屬性設置爲原始 字符串或作爲對字符串資源的引用。該字符串沒有其他 的用途而不是向用戶顯示。 versionCode屬性包含內部使用的重要版本號 。

相關問題