Android:如何避免在安装过程中丢失数据?

时间:2011-08-16 15:26:01

标签: android eclipse

最近,我在Eclipse中的所有Android项目都试图构建应用程序时出错。尝试修复错误,我将Android SDK升级到12.0。我终于弄清楚我的问题是我的调试证书已经过期了。我删除了证书并清理了所有项目。他们现在编译,但当我尝试在手机上运行它们时,我收到以下消息:

[2011-08-16 08:01:39 - VIGMDB] WARNING: Application does not specify an API level requirement!
[2011-08-16 08:01:39 - VIGMDB] Device API version is 8 (Android 2.2.1)
[2011-08-16 08:01:39 - VIGMDB] Uploading VIGMDB.apk onto device '0A3A94F17130E'
[2011-08-16 08:01:40 - VIGMDB] Installing VIGMDB.apk...
[2011-08-16 08:01:41 - VIGMDB] Re-installation failed due to different application   signatures.
[2011-08-16 08:01:41 - VIGMDB] You must perform a full uninstall of the application.   WARNING: This will remove the application data!
[2011-08-16 08:01:41 - VIGMDB] Please execute 'adb uninstall com.vig.vigmdb' in a shell.
[2011-08-16 08:01:41 - VIGMDB] Launch canceled!

我手机上的数据在这些应用程序中无法重现,我不想丢失它。我的问题是:

如何保存我的数据?后见之明是20/20。我现在有代码使用我的应用程序将我的数据库复制到我的SD卡,但我不知道没有它我无法访问我的数据库。我尝试使用ADB来提取数据库,但我得到了许可被拒绝。

如何让我的应用程序签名再次相同,以便我不必完全卸载?

3 个答案:

答案 0 :(得分:3)

您需要将手机设为root,然后将/data/data/com.your.apk.package复制到SD卡。然后unisntall你的应用程序,安装.apk的新vesrion并复制数据。

没有受支持的方法来安装由不同证书签名的.apk,同时保留旧版.apk中的数据。


以下是将数据复制到SD卡的命令列表:

> adb shell
> su
> cp -r /data/data/com.you.apk.package/ /mnt/sdcard/backup

答案 1 :(得分:1)

运行“adb uninstall -k com.vig.vigmdb”

adb uninstall [-k] - 从设备中删除此应用包                                ('-k'表示保留数据和缓存目录

答案 2 :(得分:0)

过期的证书永远丢失,无法使用(重生)签署新的应用程序。

如果没有此签名,您将无法访问内部存储器数据(尚未创建为世界可读或可写),因为这是Android安全模型的核心(访问您需要的那些数据)要么在同一个进程/同一个apk中运行,要么共享相同的Linux UserId,如果你不共享相同的签名则无法完成。)