Android无法使用greendao使用sqlcipher加密数据库

Pra*_*ker 9 android sqlcipher greendao sqlcipher-android greendao3

我正在使用greendao ORM.我正在尝试使用SQLCipher加密我的数据库.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;
Run Code Online (Sandbox Code Playgroud)

但是,每当我使用此会话执行任何数据库操作时,都会出错

 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)
Run Code Online (Sandbox Code Playgroud)

我的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'
Run Code Online (Sandbox Code Playgroud)

我的计划是

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
# If you do not use Rx:
-dontwarn rx.**
Run Code Online (Sandbox Code Playgroud)

那么如何使用greendao和SQLCipher加密我的数据库?

PS:Database db = helper.getEncryptedWritableDb("mySecretPassword"); 此行在执行任何数据库操作时生成错误.

 Database db = helper.getEncryptedWritableDb("mySecretPassword");
Run Code Online (Sandbox Code Playgroud)

Car*_*ole 2

您还需要添加 的依赖项SQLCipher。将此行添加到您的 Gradle 依赖项中:

compile 'net.zetetic:android-database-sqlcipher:3.5.4@aar'

来源:数据库加密