2017-02-09 1 views
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' 

-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를 사용하여 데이터베이스를 암호화하는 방법은 무엇입니까?

추신 : Database db = helper.getEncryptedWritableDb("mySecretPassword"); 이 줄은 데이터베이스 작업 수행시 오류를 생성합니다.

Database db = helper.getEncryptedWritableDb("mySecretPassword"); 
+0

이 프로젝트의 클래스 경로에서 Gradle을 플러그인을 가지고 있습니까? ['classpath 'org.greenrobot : greendao-gradle-plugin : 3.2.1''] (https://github.com/greenrobot/greenDAO#add-greendao-to-your-project) – maxoumime

+0

@maxoumime 내가 이것을 추가했을 때 라인, 나는 여기에 언급 한 것과 같은 중복 파일 오류가 ..... ..... http://stackoverflow.com/questions/39935916/generate-duplicate-class-in-greenado-in-android 어떻게 해결할 수 있습니까? –

답변

1

또한 SQLCipher에 대한 종속성을 추가해야합니다. 당신의 Gradle을 종속성이 줄을 추가

compile 'net.zetetic:android-database-sqlcipher:[email protected]'

출처 : Database Encryption

관련 문제