我使用Realm作为我的Android应用程序,我想使用Realm浏览器查看我的mac上的default.realm文件,但它要求加密密钥.
我没有通过提供“.encryptionKey(key)”明确地在Realm Configuration中进行加密.那么我必须提供什么加密密钥?默认情况下是否有加密?我在Android Studio上使用Realm插件2.0.2,我的Realm Browser在Mac上使用2.0.1.
我也尝试在我的代码中提供这样的encryptionKey(key):
byte[] key = new byte[64];
new SecureRandom().nextBytes(key);
RealmConfiguration config = new RealmConfiguration.Builder()
.encryptionKey(key)
.build();
并尝试向浏览器提供相同的哈希值(128长度)以打开文件,但没有运气.我在SO中找到了与如何使用adb pull检索文件相关的答案,但我对这个加密部分一无所知.在这方面的任何帮助都会很棒.
解决方法:
那么问题就是文件已损坏.来自Realm浏览器的错误消息相当误导,要求加密密钥.
由于我的手机没有root,我无法使用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
我以前没有把exec-out放在命令中,这就是腐败的原因.