タグ付けされた質問 「android-backup-service」

4
「android:allowBackup」とは何ですか?
以来新しいADTプレビュー版(バージョン21) 、彼らは私に(アプリケーションタグで)マニフェストファイルに次の事を伝え、新たな糸くずの警告があります。 android:allowBackupを明示的にtrueまたはfalseに設定する必要があります(デフォルトではtrueであり、アプリケーションのデータにセキュリティ上の影響がある可能性があります) では、公式ウェブサイト、彼らが書きました: いくつかの新しいチェック:アプリがバックアップを許可するかどうか、およびラベルチェックを明示的に決定する必要があります。ライブラリパスを設定するための新しいコマンドラインフラグがあります。編集中の増分lint分析に対する多くの改善。 この警告は何ですか?バックアップ機能とは何ですか?どのように使用しますか? また、警告がセキュリティに影響することを警告するのはなぜですか?この機能を無効にすることの欠点と利点は何ですか? マニフェストのバックアップには2つの概念があります。 「android:allowBackup」は、次に示すように、adbを介してバックアップと復元を許可します。 アプリケーションがバックアップおよび復元インフラストラクチャに参加できるようにするかどうか。この属性がfalseに設定されている場合、アプリケーションのバックアップまたは復元は、すべてのアプリケーションデータがadb経由で保存されるシステム全体のバックアップによっても実行されません。この属性のデフォルト値はtrueです。 これは、ADBを介してアプリをバックアップし、アプリのプライベートデータをPCに取り込むことができるため、セキュリティの問題と見なされます。 ただし、ほとんどのユーザーはadbが何であるかを知らないため、問題ではないと思います。知っていれば、デバイスのルート権限を取得する方法も知っています。ADB機能は、デバイスでデバッグ機能が有効になっている場合にのみ機能します。これには、ユーザーがそれを有効にする必要があります。 したがって、デバイスをPCに接続してデバッグ機能を有効にするユーザーのみが影響を受けます。PCにADBツールを使用する悪意のあるアプリがある場合、アプリがプライベートストレージデータを読み取る可能性があるため、これは問題となる可能性があります。 Googleは、ADBを介したアプリのバックアップと復元を許可するために、デフォルトで無効になっている機能を開発者カテゴリに追加するだけでよいと思います。 「android:backupAgent」は、こことここに示されているように、クラウドのバックアップと復元機能の使用を許可します。 実装するクラスの名前は、アプリケーションのバックアップエージェントであり、BackupAgentのサブクラスです。属性値は完全修飾クラス名( "com.example.project.MyBackupAgent"など)である必要があります。ただし、省略形として、名前の最初の文字がピリオド(たとえば、「。MyBackupAgent」)の場合、要素で指定されたパッケージ名に追加されます。デフォルトはありません。名前を指定する必要があります。 これはセキュリティの問題ではありません。

6
Androidのバックアップ/復元:内部データベースをバックアップする方法は?
BackupAgentHelper提供されているを使用して、所有してFileBackupHelperいるネイティブデータベースをバックアップおよび復元するように実装しました。これは、通常一緒に使用するデータベースでContentProvidersあり、に存在し/data/data/yourpackage/databases/ます。 これは一般的なケースだと思うでしょう。ただし、ドキュメントでは何をすべきかが明確ではありません:http://developer.android.com/guide/topics/data/backup.html。これらの典型的なデータベースに特化したものはありませんBackupHelper。したがって、を使用しFileBackupHelper、「/databases/」の.dbファイルをポイントし、「」のdb操作(などdb.insert)の周りにロックを導入し、インストール後に存在しないため、以前にContentProviders「/databases/」ディレクトリを作成しようとしましたonRestore()。 私はSharedPreferences過去に別のアプリで成功するために同様のソリューションを実装しました。ただし、emulator-2.2で新しい実装をテストするLocalTransportと、ログからのバックアップが実行され、復元が実行されている(およびonRestore()呼び出されている)ことがわかります。ただし、dbファイル自体は作成されません。 これはすべて、インストール後、アプリの最初の起動前、復元の実行後であることに注意してください。それとは別に、私のテスト戦略はhttp://developer.android.com/guide/topics/data/backup.html#Testingに基づいていました。 また、自分で管理しているsqliteデータベースについても、SDカードや独自のサーバーなどへのバックアップについても話していません。 カスタムの使用を推奨するデータベースについての言及をドキュメントで見ましたが、BackupAgent関連していないようです。 ただし、次のことが必要な場合は、BackupAgentを直接拡張することをお勧めします。*データベース内のデータをバックアップする。ユーザーがアプリケーションを再インストールしたときに復元するSQLiteデータベースがある場合は、バックアップ操作中に適切なデータを読み取るカスタムBackupAgentを構築してから、テーブルを作成し、復元操作中にデータを挿入する必要があります。 少し明快にしてください。 本当にSQLレベルまで自分で行う必要がある場合は、次のトピックについて心配しています。 データベースとトランザクションを開きます。アプリのワークフローの外で、このようなシングルトンクラスからそれらを閉じる方法がわかりません。 バックアップが進行中であり、データベースがロックされていることをユーザーに通知する方法。時間がかかる場合があるので、プログレスバーを表示する必要があるかもしれません。 復元時に同じことを行う方法。私が理解しているように、復元は、ユーザーがすでにアプリの使用を開始したとき(およびデータベースにデータを入力したとき)に発生する可能性があります。したがって、バックアップされたデータを元の場所に復元する(空のデータまたは古いデータを削除する)だけだと推測することはできません。どういうわけかそれに参加する必要がありますが、IDが原因で、重要なデータベースでは不可能です。 復元が完了した後、ユーザーが到達不能な時点で立ち往生することなくアプリを更新する方法。 データベースがバックアップまたは復元時にすでにアップグレードされていることを確認できますか?そうしないと、期待されるスキーマが一致しない可能性があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.