3

在我的项目中,我创建了一个应用程序,现在当我尝试安装新应用程序时,它会要求完全卸载该应用程序。以前的应用程序,但我不能做同样的事情,因为我要重用以前的应用程序留下的数据,我不能修复不同的应用程序签名。问题我可以在不卸载的情况下将其安装到设备上。

I'm to retain application data

[2012-05-23 19:09:56 - iCam] Re-installation failed due to different application signatures.
[2012-05-23 19:09:56 - iCam] You must perform a full uninstall of the application. WARNING: This will remove the application data!
[2012-05-23 19:09:56 - iCam] Please execute 'adb uninstall iCam.Cam' in a shell.
[2012-05-23 19:09:56 - iCam] Launch canceled!
4

4 回答 4

4

您需要安装与设备上已有的签名相同的应用程序。

您将需要确定应用程序是如何安装在设备上的。你至少有两个选择:

  • 使用来自 Eclipse 的默认调试签名密钥(密钥androiddebugkey库中的密钥~/.android/debug.keystore
  • 在文件->导出期间使用了其他密钥库...

如果您使用在bin目录中生成的二进制文件(或直接从 Eclipse 安装的 apk),则使用默认密钥库,并且要创建兼容的 apk,您需要找到在创建第一个 apk 时位于此位置的相同文件:~/.android/debug.keystore. 然后使用File->Export...并选择此文件。输入android密码,再次选择androiddebugkey并输入android密码。最后选择目标 apk 名称并单击Finish

如果无法找到以前的签名密钥,您可以尝试:

  • 备份应用程序数据
  • 卸载应用程序
  • 安装具有不同签名的应用程序(现在它成功了)
  • 安装回应用程序数据

可以使用 TitaniumBackup 应用程序备份和恢复应用程序数据。它可能需要有根设备。

于 2012-05-23T13:54:22.887 回答
1

//使用-r通过命令提示符安装,通过保留其数据重新安装

adb install -r ./yourfolder/MyCam.apk

//adb 安装选项

adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
                                 ('-l' means forward-lock the app)
                                 ('-r' means reinstall the app, keeping its data)
                                 ('-s' means install on SD card instead of internal storage)
于 2012-05-23T13:48:41.697 回答
1

您必须使用与您上次构建时签署的相同签名。如果您在 Eclipse 中重置了调试签名,或者您使用新的发布密钥对应用程序进行了签名,那么您将无法更新。解决此问题的唯一方法是使用与上次 AFAIK 签署的相同密钥。

但是,在 DDMS 中,您可以从 SD 卡中提取数据,卸载应用程序,重新安装,然后将数据放回原处。我从未尝试过,但我认为这可能是您唯一的选择。

于 2012-05-23T13:48:57.217 回答
1

我有同样的问题。幸运的是,我在这个应用程序中有一个“to-file”备份功能。您需要相同的签名。你使用调试密钥库吗?对于现实世界的使用,这不是一个好主意。您需要使用与原始创建者相同的调试密钥。

于 2012-05-23T13:53:25.587 回答