9
我正在使用greendao ORM。我正在嘗試使用SQLCipher加密我的數據庫。 Greendao自動支持sqlcipher。所以我寫了下面的代碼進行加密。Android無法使用greendao使用sqlcipher加密數據庫
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");
你在你的項目的classpath的搖籃插件? ['classpath'org.greenrobot:greendao-gradle-plugin:3.2.1''](https://github.com/greenrobot/greenDAO#add-greendao-to-your-project) – maxoumime
@maxoumime當我添加這個行,我得到這個重複的文件錯誤,像這裏提到的一個..... http://stackoverflow.com/questions/39935916/generate-duplicate-class-in-greenado-in-android如何解決這個問題? –