1

この質問と同様の質問をしましたが、まだこれを理解できません。

以前は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 - 私の質問が説明的であることは知っていますが、これを行う方法が見つかりませんでした。

4

1 に答える 1