Я использую greendao ORM. Я пытаюсь зашифровать мою базу данных с помощью SQLCipher. Greendo автоматически поддерживает sqlcipher. Поэтому я написал следующий код для шифрования.Android Не удалось зашифровать базу данных с помощью sqlcipher с помощью greendao
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "encrypted-db",null);
Database db = helper.getEncryptedWritableDb("mySecretPassword");
DaoSession session = new DaoMaster(db).newSession();
return session;
Однако всякий раз, когда я выполнить любую операцию базы данных с помощью этой сессии, он дает ошибку
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/greenrobot/greendao/database/DatabaseOpenHelper$EncryptedHelper;
at org.greenrobot.greendao.database.DatabaseOpenHelper.checkEncryptedHelper(DatabaseOpenHelper.java:121)
at org.greenrobot.greendao.database.DatabaseOpenHelper.getEncryptedWritableDb(DatabaseOpenHelper.java:133)
Мои Gradle зависимости являются->
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'org.greenrobot:greendao:3.2.0'
compile 'com.google.code.gson:gson:2.8.0'
Мои правила Proguard являются
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
# If you do not use Rx:
-dontwarn rx.**
Итак, как зашифровать мою базу данных с помощью greendao и SQLCipher?
PS: Database db = helper.getEncryptedWritableDb("mySecretPassword");
Эта строка генерирует ошибку при выполнении любой операции с базой данных.
Database db = helper.getEncryptedWritableDb("mySecretPassword");
У вас есть плагин Gradle в вашем пути к классам проекта? ['classpath 'org.greenrobot: greendao-gradle-plugin: 3.2.1''] (https://github.com/greenrobot/greenDAO#add-greendao-to-your-project) – maxoumime
@maxoumime, когда я добавил это line, я получил эту копию повторяющихся файлов, например, указанную здесь. http://stackoverflow.com/questions/39935916/generate-duplicate-class-in-greenado-in-android, как это решить? –