最近,我在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来提取数据库,但我得到了许可被拒绝。
或
如何让我的应用程序签名再次相同,以便我不必完全卸载?
答案 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,如果你不共享相同的签名则无法完成。)