2011-08-16 14 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です。私は今私のアプリケーションを使用して私のデータベースに私のデータベースをコピーするコードがありますが、私はそれなしで私のデータベースにアクセスすることができなかったのか分からなかった。私はADBを使用してデータベースをプルしようとしましたが、許可が拒否されます。

または

どのように私は私のアプリケーションは、私は完全なアンインストールする必要はありません再び同じシグネチャ作るのですか?

答えて

3

あなたの携帯電話を根絶する必要があり、その後、SDカードする/data/data/com.your.apk.packageをコピーします。次に、あなたのアプリ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

成功!私は正常にデータをバックアップし、私のアプリを完全にアンインストールした後に復元しました。私は自分のデータを持っている、私の携帯電話はレンガではなく、人生は良いです!あなたに助けてくれてありがとう、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

期限切れの証明書が永遠に失われ、新しいアプリケーションに署名する(生まれ変わり)を使用することはできません。

このシグネチャがないと、内部メモリのデータにアクセスできなくなります(これは世界で読み取り可能または書き込み可能ではありません)。これはアンドロイドセキュリティモデルの心臓部です同じプロセス/同じapkで実行するか、同じlinux UserIdを共有する必要があります。これは、同じシグネチャを共有していないと実行できません)。

関連する問題