質問

[編集]追加したすべての情報から、これは、同じapkで同じビルドであるにもかかわらず、アプリが同じUIDで新しいアプリとして登録されていることが原因である可能性があります。修正を開始する場所についてのアイデアをいただければ幸いです

共有設定ファイルのみをバックアップしたいので、Helperクラスを使用してアプリにBackupAgentを実装しました。

バックアップ呼び出しは正常に行われているようです。アプリがdataChanged()を実行した後に「bmgrrun」を実行すると、logcatに次のように表示されます。 ジェネラコディセタグプレ

ただし、すぐに実行した場合でも、「bmgr restore」アクションを実行すると、logcatに次のようになります。 ジェネラコディセタグプレ

復元のコンソール出力は次のとおりです。 ジェネラコディセタグプレ

何かアイデアはありますか?アンインストール/ワイプ/何もしていないので、明らかに同じバージョンと署名です。私はすべてバックアップサービスにサインアップしていて、キーが正しく入力されているなどです。

編集:デバッグキーで署名されたビルドとしては正常に機能するようですが、エクスポートされ、難読化され、zip整列されたリリースキーで署名されたapkではこのように失敗します。デバッグビルドからリリースビルドにデータを復元しようとした場合、それは私には理にかなっていますが、そうではありません。

edit2:ヘルパー名などを変更しようとしましたが、それでも同じ動作が得られます。デバッグキー署名付きapkは完全に機能し、バックアップ、アンインストール、再インストールが可能で、自動的に復元されます。リリースキー署名apkは毎回これを行います。内部関数呼び出しが1つしかないにもかかわらず、@番号が異なるバックアップ呼び出しが繰り返されることにまだ少し心配しています。ただし、デバッグ用のものもこれを実行するため、完全にそれであるとは限りません。

dumpsysバックアップの出力には、パッケージが4回表示されます... ジェネラコディセタグプレ

edit3:アンインストールと再インストールを一貫して行うと、同じUIDでアプリの新しいインスタンスが追加され続けます。これは、同じapkからの同じアプリの同じビルドですが、そのリストにそれ自体の新しいインスタンスを作成し続けます。それは正しい振る舞いですか? BackupManagerソースを調べたところ、(正しく読んだ場合)デバッグモードでは、マネージャーは署名をあまり気にしていないように見えます。これが、おそらく問題なく実行される理由です。

役に立ちましたか?

解決 3

それは自分自身を修正しただけです。複数のインスタンスがすべて存在しますが、現在は機能しています。署名の不一致について不平を言うのを突然やめました。

教訓は、あなたがそれを正しく行ったと確信しているなら、ただ待ってください:P

他のヒント

設定からバックアップを無効にする->プライバシー。すべてのバックアップを削除します。次に、それを有効にすると、すべてが再び機能します。

同じ問題が発生しましたが、bmgr wipe <transport> <package>では解決しませんでした。

私を助けたのは、adb shellからバックアップを切り替えることでした: ジェネラコディセタグプレ

ところで。私が「通常の」ユーザーである間、このエラーで失敗しました: ジェネラコディセタグプレ

suを使用してスーパーユーザーに切り替え、操作を渡しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top