为什么我的Android应用程序的新版本不会安装旧版本

时间:2011-12-15 23:15:47

标签: android android-manifest appcelerator-mobile android-install-apk apk

我成功制作了一个小的私有Android应用程序(如果有所不同,使用appcelerator)并从已签名的apk文件将其安装在我的设备上。

然后我对我的应用程序进行了一些更改,并使用更新的版本号重新打包,但是使用相同的证书进行了签名,当我遇到问题时。

当我尝试在我的Android设备上安装它时,正如预期的那样,它警告我“您正在安装的应用程序将替换另一个应用程序”,但“所有以前的应用程序数据都将被保存”。我同意更换,安装继续发生错误,直到它收到并说“应用程序未安装”,没有任何其他细节。

原始apk中的版本代码和名称是:

android:versionCode =“1”android:versionName =“1.0”

和第二个版本

android:versionCode =“2”android:versionName =“1.1”

我为此感到生气,我错过了什么?

5 个答案:

答案 0 :(得分:6)

首先,尝试使用adb:

安装您的应用程序
adb install -r /path/to/your.apk

如果这没有帮助,请尝试:

adb shell pm uninstall -k com.your.package
adb install /path/to/your.apk

这会卸载apk,同时保留其所有数据。然后再次重新安装它。如果这也没有帮助,adb至少会为您提供更容易进行故障排除的错误代码。

答案 1 :(得分:2)

如果密钥签名不同,则可以解决该问题

答案 2 :(得分:1)

虽然OP已经提到他们将android:versionCode设置为高于之前的版本,所以这个答案不会解决他们的具体问题,我发现在我的情况下答案是增加{{ 1}}高于安装的版本。只有在找到这个问题/

之后才想到这一点

答案 3 :(得分:0)

您希望使用与发布apk相同的密钥签名来检查您的逻辑

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=your_package_name &hl=en"))); 

它将在Play商店中显示更新按钮。

答案 4 :(得分:0)

有时旧的构建文件会被重用。您可以保存以下脚本:

(1)将以下脚本添加到package.json:

{
    ...
    "scripts": {
        ...
        "android-install": "npm run android-clean && npm run android-bundle && npm run android-assemble-release && npm run android-uninstall-release && npm run android-adb-install"
    }
} 

(2)每次要安装到Android设备上时,只需运行:

npm run android-install

如果未连接任何Android设备,则上述脚本将失败。如果您只想组装发行版而不将应用程序安装到设备上,只需删除最后两个命令(&& npm run android-uninstall-release && npm run android-adb-install