2016-10-09 2 views
3

Я использую Realm для моего приложения для Android, я хочу просмотреть файл default.realm на своем mac, используя браузер Realm, однако он просит ключ шифрования. enter image description here Я не делаю шифрование в конфигурации Realm явно, предоставляя «.encryptionKey (key)». Тогда какой ключ шифрования я должен предоставить? Есть ли шифрование по умолчанию? Я использую плагин Realm 2.0.2 на Android Studio, а мой браузер Realm 2.0.1 на Mac. Я также попытался обеспечить EncryptionKey (ключ), как это в моем коде:Ключ шифрования для просмотра файла realm на Mac с помощью браузера Realm

byte[] key = new byte[64]; 
new SecureRandom().nextBytes(key); 
RealmConfiguration config = new RealmConfiguration.Builder() 
.encryptionKey(key) 
.build(); 

И попытался поставить тот же хэш (128 длина) в браузер, чтобы открыть файл, но не повезло. Я нашел ответы в SO, связанные с тем, как получить файл с помощью adb pull, но я не знаю об этой части шифрования. Любая помощь в этом отношении будет отличной.

+1

Похоже, что ваш файл Realm поврежден. Вы скопировали файл, пока он был открыт? – geisshirt

+0

Я скопировал файл, пока я подключил свой телефон к своему mac и отлаживался через Android Studio. Я использовал эту команду для копирования содержимого файла, поскольку мой телефон не был укоренен. ./adb shell «run-as <имя-пакета> cat /data/data//files/default.realm"> ~/default.realm –

+0

Спасибо @geisshirt за подсказку. Я думал, что он был зашифрован все время. С вами совет я понял, что это из-за коррупции. –

ответ

5

Ну, проблема в том, что файл был поврежден. Сообщение об ошибке из браузера Realm скорее вводило в заблуждение, запрашивая ключ шифрования.

Поскольку мой телефон не был внедрен, я не смог получить файл напрямую, используя adb pull.

adb pull /data/data/<packagename>/files/ . 

Я использовал другую команду, скопировав содержимое в файл в моей системе, что приведет к повреждению.

Вот команда, которая, наконец, работала для меня.

./adb exec-out run-as <packagename> cat /data/data/<packagename>/files/default.realm > ~/Documents/foo/foo.realm 

Раньше я не выполнял вычеркивание в команде, что было причиной коррупции.