我成功制作了一个小的私有Android应用程序(如果有所不同,使用appcelerator)并从已签名的apk文件将其安装在我的设备上。
然后我对我的应用程序进行了一些更改,并使用更新的版本号重新打包,但是使用相同的证书进行了签名,当我遇到问题时。
当我尝试在我的Android设备上安装它时,正如预期的那样,它警告我“您正在安装的应用程序将替换另一个应用程序”,但“所有以前的应用程序数据都将被保存”。我同意更换,安装继续发生错误,直到它收到并说“应用程序未安装”,没有任何其他细节。
原始apk中的版本代码和名称是:
android:versionCode =“1”android:versionName =“1.0”
和第二个版本
android:versionCode =“2”android:versionName =“1.1”
我为此感到生气,我错过了什么?
答案 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
)