Android 无法使用 greendao 使用 sqlcipher 加密数据库
Android Unable to encrypt database using sqlcipher using greendao
我正在使用 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;
但是,每当我使用此会话执行任何数据库操作时,都会出现错误
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'
我的混淆规则是
-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");
您还需要添加 SQLCipher
的依赖项。将此行添加到您的 Gradle 依赖项中:
compile 'net.zetetic:android-database-sqlcipher:3.5.4@aar'
我正在使用 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;
但是,每当我使用此会话执行任何数据库操作时,都会出现错误
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'
我的混淆规则是
-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");
您还需要添加 SQLCipher
的依赖项。将此行添加到您的 Gradle 依赖项中:
compile 'net.zetetic:android-database-sqlcipher:3.5.4@aar'