私はthis質問と同様の質問を行ったが、私はまだこれを把握することができません。Androidの既存のレルムデータベースに暗号化を適用するにはどうすればよいですか?
私はアンドロイドアプリのSQLite
を使用していました。サイズがの事前に設定されたSqliteデータベースは約15 MBです。私は新しいRealmデータベースに自分のレコードを一時的なアンドロイドアプリでコピーしました。この新しいRealmデータベースのサイズは約150 MBでした。それから、私はMacでRealmブラウザでそれを開き、圧縮しました。サイズが15 MBに縮小されました。
新しいデータベースの作成中に暗号化を使用して、のsqlite行をコピーすると、サイズは約150 MBになります。私は16進パスワードを使ってそれを開いたとき、それはうまく開きます。その後私はそれを以前のサイズに戻して通常の15 MBに戻しました。しかし、私はなぜの暗号化が今削除されたのか分からない。
これに対処するには、1つの解決策しか考えられません。既に圧縮されたRealmデータベースに暗号化を適用できるかどうか。しかし、私は、Androidでこれを行う方法を把握できませんでしたか?
編集 - いくつかの関連部分 -
パート1 -
Realm.init(this);
byte[] key = new byte[64]; // Just for demonstration
RealmConfiguration config = new RealmConfiguration.Builder()
.name("QBank.realm")
.directory(getExternalFilesDir(null))
.encryptionKey(key)
.build();
Realm realm = Realm.getInstance(config);
パート2 -
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button_sqlite2realm:
DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
databaseAccess.open();
questionsList = databaseAccess.getAllQuestions();
databaseAccess.close();
Realm realm = Realm.getInstance(config);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
for (QuestionBank question : questionsList){
realm.copyToRealmOrUpdate(question);
}
}
});
break;
}
}
圧縮データベースに暗号化されたデータベースを変換する - >私は、このレルムを引っ張っデータベースはアンドロイドエミュレータから - >(六進パスワードで)レルムブラウザで開く - >圧縮作成された圧縮データベースは現在暗号化されていません)
P.S. - 私の質問は分かりやすいですが、私はこれを行う方法を見つけることができませんでした。
レルムデータベースを閉じていますか?可能であれば、あなたのコードをコピーして共有しますか? –
申し訳ありませんが、私はあなたを取得していません。あなたは 'sqlite'から' realm'へ、または暗号化から圧縮へのコピーのためのコードを意味しますか? –
@PravinD、私は関連情報を使って質問を更新しました。 –