Android:“更新版本0比安装版本旧”

时间:2013-06-28 22:39:39

标签: android

我正在以发布模式构建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"。我在<integer name="app_version_code">3</integer>中定义了res/values/strings.xml

我很确定这曾经有用,但现在似乎没有。如果我用硬编码的“3”替换@integer引用,它就可以工作。不应该@integer be supported

1 个答案:

答案 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”。或者您   每次新版本时,可以简单地将数字增加一个   释放。

     

android:versionName

     

向用户显示的版本号。 此属性可以设置为原始属性   字符串或作为字符串资源的引用。字符串没有其他   目的而不是向用户显示。 versionCode属性成立   内部使用的重要版本号。