2011-08-16 35 views
2

最近,我在Eclipse中的所有Android项目都尝试构建应用程序时出错。试图修复这些错误,我将我的Android SDK升级到了12.0。我终于明白我的问题是我的调试证书已过期。我删除了证书并清理了我的所有项目。他们现在编译,但是当我尝试我的手机上运行它们,我得到以下信息:Android:我如何避免在重新安装期间丢失数据?

[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

你需要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 
+0

今天早上我确定了我的电话,但我仍然获得了许可。我正在与Froyo一起使用Droid X。我用z4root来为我的手机做根。在ADB中使用拉或复制,我获得权限被拒绝。我该怎么办呢? –

+0

我已经更新了答案。 – inazaruk

+0

SUCCESS !!!我已成功备份了我的数据,并在完成卸载我的应用程序后进行了恢复。我有我的数据,我的手机不是砖块,生活很好!谢谢inazaruk为你提供帮助。 –

1

运行 “ADB卸载-k com.vig.vigmdb”

ADB卸载[-k] - 从所述设备 ( '-k' 是指保持数据和缓存目录中删除此应用程序包

+0

虽然这将保留数据,但重新安装另一个使用不同认证签名的.apk仍然会失败。 – inazaruk

+0

谢谢你纠正我。如果这个命令不能用于这个目的,它是为了什么? – Josh

+0

ha,adb提示我使用: “adb shell pm uninstall -k your/bundle/id”取而代之,它可以很好地工作。 – Imskull

0

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

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

相关问题