問題タブ [backup-agent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - クラウド経由で Android 上のアプリのデータをバックアップする方法は?
バックグラウンド
作業中のアプリの設定やその他の値を保存して復元したいと考えています。
問題
結局のところ、Android には「 BackupAgent 」と呼ばれる優れた機能が既に備わっています。
ただし、すべてのデバイスでサポートされているわけではないようです。
データのバックアップは、すべての Android 搭載デバイスで利用できるとは限りません
これは API の問題ではなく (2.2 からのみサポートされています)、メーカー/キャリアの問題です:
バックアップ トランスポートは、Android のバックアップ フレームワークのクライアント側コンポーネントであり、デバイス メーカーやサービス プロバイダーによってカスタマイズ可能です。バックアップ トランスポートはデバイスごとに異なる場合があり、任意のデバイスで使用できるバックアップ トランスポートはアプリケーションに対して透過的です。バックアップ マネージャ API は、特定のデバイスで利用可能な実際のバックアップ トランスポートからアプリケーションを分離します。アプリケーションは、基礎となるトランスポートに関係なく、API の固定セットを介してバックアップ マネージャと通信します。
質問
Android のデータをクラウドに保存および復元するための無料の代替手段はありますか?
android - 多数のファイルで BackupAgentHelper がクラッシュする
バックアップが必要なユーザーによって生成された大量のファイルを含むアプリがあります。すべてのコンテンツは、データベース、設定、または 4 つのフォルダーのうちの 1 つに保存されます。FileBackupHelpers
各フォルダー内のすべてのファイルを生成する単純なヘルパー関数を作成しました。ただし、onCreate()
フレームワークコードを実行した後、FileBackupHelper
解析するパスの量を窒息させ、アプリをクラッシュさせているようです。
バックアップ エージェントのコードは次のとおりです。
ログ出力は次のとおりです。
あなたが与えることができる助けを前もってありがとう!他に情報が必要な場合はお知らせください。
android - アプリの再インストール時に BackupAgent.onRestore が呼び出されませんが、bmgr 復元コマンドが呼び出されます
カスタム BackupAgent をテストしています。以下は、シミュレーターとEclipse ADTでの私のテストです
コマンドを使用して 1 つのバックアップと復元をテストします ---- 正常に動作します
- adb シェル bmgr が有効
- adb シェル bmgr バックアップ app_package
- adb shell bmgr run ---------------------- バックアップを実行します (BackupAgent.onBackup が呼び出されます)
- アプリで、一部のデータを削除しました
- adb shell bmgr restore app_package ------- バックアップからデータを復元
- 手順 4 で削除した一部のデータを含め、すべてが復元されました ------ 正常に動作します
テスト 2 バックアップ / アプリのアンインストール / アプリの再インストール ---- 機能しない
- adb シェル bmgr が有効
- adb シェル bmgr バックアップ app_package
- adb shell bmgr run ---------------------- バックアップを実行します (BackupAgent.onBackup が呼び出されます)
- adb uninstall app_package --------------- バックアップ後にアプリをアンインストールします
- Debug As / Android Application again ---- アプリケーションは再インストールされましたが、データは復元されません (ステップ 3 でデータのバックアップ)
更新しました
- テスト 2 が Nexus 5 Simulator (API 19 - 4.4.2) で動作することがわかりました。
- ただし、テスト 2 は Nexus 4 シミュレーター (API 16-4.1.2) では機能しませんでした。
誰にもアイデアはありますか?ありがとうございました!
android - BackupAgentHelper の実装の何が問題になっていますか?
アプリにバックアップ サポートを追加しようとしています。データ バックアップ ガイドで説明されているように、BackupAgentHelper のサブクラスを設定しました。私は自分のコードを他のいくつかのチュートリアルや SO 投稿と比較しましたが、ここでは問題は見られません。
new BackupManager(this.app).dataChanged()
また、データを保存するたびに実行しています。
Google Play アカウントにログインし、デバイス設定でバックアップと復元のオプションが有効になっているデバイスで実行する./adb -d shell bmgr run
と、logcat で次の結果が得られます。
私が設定したヘルパーの処理に関する部分と、「バックアップ パスが終了しました」は、バックアップが機能していることを示しているようです。次に、アプリをアンインストールして再インストールすると./adb -d install
、次の結果が得られます。
「復元バージョンは互換性があります」と「復元完了」の部分は有望に見えますが、データは復元されません。「SKIP_PADDING FAILED」というエラーが表示されますが、それが私が行っていることに関連しているかどうか、または関連している場合の修正方法がわかりません。
ローカルトランスポートを使用するエミュレーターでもこれを試しました。バックアップ マネージャーを実行すると、次の結果が得られます。
再インストールすると、次の結果が得られます。
この場合、バックアップ プロセスはバックアップされたデータのサイズを表示します。これはさらに有望ですが、復元プロセスが EOFException でクラッシュし、それを修正する方法がわかりません。繰り返しますが、何も復元されません。
最終的には、これが実際のデバイスで動作するために必要なだけですが、手がかりが得られる場合に備えて、エミュレーターからの結果を投稿しています。
これらのログを解釈して何が問題なのかを調べるのを手伝ってくれる人はいますか?
また、いくつかの SO スレッドが未回答であるか、システムが機能しないと結論付けているため、このシステムが機能するようになったかどうかについて、簡単なコメントをいただければ幸いです。
アップデート
これらのログをさらに調べたところ、デバイスまたはエミュレーターからのバックアップ中に関連するエラーはないようですが、それぞれの復元中に重大なポイントで別のエラーがスローされました。デバイスでは SKIP_PADDING FAILED、デバイスでは EOFException です。エミュレータ。SKIP_PADDING FAILED は、次の 2 つの未回答の質問に記載されています。
backup_data: 行 X で SKIP_PADDING が失敗しました
SKIP_PADDING FAILED のソースコードを読んでみましたが、何をしているのか理解できませんでした。次に、このコードを onRestore メソッドに追加して、BackupDataInput オブジェクトにデータが含まれているかどうかを確認しました。
します!これで、データがバックアップされていることがわかりますが、BackupAgent.performRestore (BackupAgentHelper.onRestore によって呼び出される) の何かが壊れています。onRestore メソッドでデータ ファイルを自分で保存することで、これを回避できると思います。誰かがより良い解決策を持っていますか?
android - オフライン アプリケーションの SharedPreferencesBackupHelper
オフラインでのみ動作するアプリの sharedPreference のバックアップを保持しようとしています。Android のSharedPreferencesBackupHelper APIとBackupAgentHelper APIを使用する予定でしたが、これらの API を使用すると、アプリはデバイスにローカルではなくクラウド上でのみ共有設定をバックアップできるようになります。
これらの API がローカルでもバックアップを保持しているかどうかを知りたいです。そうでない場合、ユーザーがアプリをアンインストールしたときに sharedPreference ファイルがそのまま残るように、sharedPreference ファイルのバックアップをデバイス上でローカルに保持できる他の方法はありますか?
android - android:allowBackup=false でも BackupAgent はまだ必要です
Android ver 4.4.2用のアプリ(Android Studio 1.3.1)の設計で忙しく、起動後すぐにアプリを起動したいです。私の問題は、それが機能せず、デバッグ時に BackupAgent が見つからないというエラーが表示されることです。マニフェストで android:allowBackup を false に設定しましたが、不足している BackupAgent に関する例外を削除するのに役立たないようです。
Android:allowBackup の目的を誤解していますか?
バックアップは必要ありません。
android-sqlite - Android バックアップ API: データベースのバックアップを実行する方法/スレッド セーフを復元する方法は?
SQLite データベースのバックアップ/復元を実行したいと考えています。最も簡単な方法は、BackUp API を使用することだと思いました。ただし、ドキュメントには次のように記載されています。
ただし、内部ストレージ上のファイルの読み取りと書き込みはスレッドセーフではありません。バックアップ エージェントがアクティビティと同時にファイルの読み取りまたは書き込みを行わないようにするには、読み取りまたは書き込みを実行するたびに同期ステートメントを使用する必要があります。たとえば、ファイルを読み書きするアクティビティでは、同期ステートメントの固有ロックとして使用するオブジェクトが必要です。
データベースのバックアップ/スレッド セーフの復元を実行するにはどうすればよいですか?