この質問と同様の質問をしましたが、まだこれを理解できません。
以前はSQLite
、Android アプリに使用していました。事前入力された Sqliteデータベースのサイズは約 15 MB です。レコードを新しい Realm データベースにコピーするための一時的な Android アプリを作成しました。この新しい 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;
}
}
暗号化データベースを圧縮データベースに変換する場合 -> このレルム データベースを Android エミュレーターから取得しました -> レルム ブラウザで開きました (16 進数のパスワードを使用) -> 圧縮 (ただし、この新しく作成された圧縮データベースは暗号化されていません)
PS - 私の質問が説明的であることは知っていますが、これを行う方法が見つかりませんでした。