簡體   English   中英

Android:“更新版本0比安裝版本舊”

[英]Android: “update version 0 is older than installed version”

我正在以發布模式構建Android應用。 我第一次在設備上安裝它,它工作正常。 但是如果我從同一個源重建它,用相同的密鑰簽名,並重新安裝,它就會失敗。 我在日志中收到以下錯誤:

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>

我很確定這曾經有用,但現在似乎沒有。 如果我用硬編碼的“3”替換@integer引用,它就可以工作。 應該支持 @integer嗎?

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

有關使用ant build腳本實現類似結果的一些想法, 請參閱此Google網上論壇討論此Stack Overflow問題

如果您查看Android文檔 ,它會特別指出您可以使用versionName的資源,但是對於versionCode說沒有這樣的事情:

android:versionCode

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

該值必須設置為整數,例如“100”。 您可以根據需要定義它,只要每個連續版本具有更高的數字即可。 例如,它可以是內部版本號。 或者,您可以通過在低16位和高16位分別編碼“x”和“y”將“xy”格式的版本號轉換為整數。 或者,每次發布新版本時,您只需將數字增加一即可。

android:versionName

顯示給用戶的版本號。 此屬性可以設置為原始字符串或字符串資源的引用 該字符串沒有其他目的,只能顯示給用戶。 versionCode屬性包含內部使用的重要版本號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM