I'm using sqlcipher
in my dependencies. My build.gradle
file is as given below:
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.dell.prapproval"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName "$rootProject.ext.versionName"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
consumerProguardFiles file('proguard.cfg')
ndk {
abiFilters "armeabi-v7a"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
signingConfigs {
config {
keyAlias 'emc_mobile'
keyPassword 'P@ssw0rd'
storeFile file('EMC_MOBILE')
storePassword 'P@ssw0rd'
}
}
buildTypes {
debug {
minifyEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
//versionNameSuffix "-T"
}
release {
debuggable true
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
// versionNameSuffix "-R"
}
}
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
implementation(name: 'AirWatchSDK-release-18.5.5-SNAPSHOT', ext: 'aar')
implementation(name: 'AWFramework-release-18.5.17-SNAPSHOT', ext: 'aar')
implementation(name: 'AWNetworkLibrary-release-18.5.14-SNAPSHOT', ext: 'aar')
implementation(name: 'CredentialsExt-18.3-SNAPSHOT', ext: 'aar')
implementation(name: 'android-database-sqlcipher-3.5.9', ext: 'aar')
implementation(name: 'littleproxy-1.1.0-beta2-d', ext: 'jar')
implementation(name: 'slf4j-android-1.6.1-RC1', ext: 'jar')
implementation(name: 'kotlin-stdlib-1.2.50', ext: 'jar')
// implementation(name: 'okio-1.14.1', ext: 'jar')
// implementation(name: 'gson-2.4', ext: 'jar')
implementation(name: 'netty-all-4.0.34.Final.AW.a', ext: 'jar')
// implementation(name: 'lang3-3.1', ext: 'jar')
// implementation(name: 'zxing-3.2.1', ext: 'jar')
// implementation(name: 'okhttp-3.6.0', ext: 'jar')
implementation(name: 'guava-20.0', ext: 'jar')
implementation(name: 'awrepackagedhttpclient-1.0.3', ext: 'jar')
implementation(name: 'apptunnellib-07082016', ext: 'jar')
implementation("com.android.support:preference-v14:$rootProject.ext.supportLibraryVersion") {
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'support-annotations'
exclude group: 'com.android.support', module: 'recyclerview-v7'
}
implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:design:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:support-v4:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:cardview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:support-vector-drawable:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:animated-vector-drawable:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support.constraint:constraint-layout:$rootProject.ext.constraintLayoutLibraryVersion"
implementation "com.jpardogo.googleprogressbar:library:$rootProject.ext.googleprogressbarVersion"
implementation "com.android.volley:volley:$rootProject.ext.volleyVersion"
implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion"
implementation "com.github.Shashank02051997:FancyToast-Android:$rootProject.ext.fancyToastVersion"
//implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation "junit:junit:$rootProject.ext.junitLibraryVersion"
androidTestImplementation "com.android.support.test:runner:$rootProject.ext.runnerLibraryVersion"
androidTestImplementation "com.android.support.test.espresso:espresso-core:$rootProject.ext.espressoCoreLibraryVersion"
implementation "com.google.android.gms:play-services-base:$rootProject.ext.googlePlayServiceVersion"
}
So when I run my code in a mobile, I get below error:
09-11 15:48:23.876 30829-30878/com.dell.prapproval E/art: Failed to register native method net.sqlcipher.database.SQLiteDatabase.native_getDbLookaside()I in /data/app/com.dell.prapproval-1/split_lib_directories_apk.apk
09-11 15:48:23.877 30829-30878/com.dell.prapproval E/art: ----- class 'Lnet/sqlcipher/database/SQLiteDatabase;' cl=0x12d64ac0 -----
objectSize=600 (136 from super)
access=0x0008.0001
super='java.lang.Class<net.sqlcipher.database.SQLiteClosable>' (cl=0x12d64ac0)
vtable (33 entries, 4 in super):
0: void net.sqlcipher.database.SQLiteDatabase.addSQLiteClosable(net.sqlcipher.database.SQLiteClosable)
1: void net.sqlcipher.database.SQLiteDatabase.addToCompiledQueries(java.lang.String, net.sqlcipher.database.SQLiteCompiledSql)
2: void net.sqlcipher.database.SQLiteDatabase.beginTransaction()
3: void net.sqlcipher.database.SQLiteDatabase.beginTransactionWithListener(net.sqlcipher.database.SQLiteTransactionListener)
4: void net.sqlcipher.database.SQLiteDatabase.close()
5: net.sqlcipher.database.SQLiteStatement net.sqlcipher.database.SQLiteDatabase.compileStatement(java.lang.String)
6: int net.sqlcipher.database.SQLiteDatabase.delete(java.lang.String, java.lang.String, java.lang.String[])
7: void net.sqlcipher.database.SQLiteDatabase.endTransaction()
8: void net.sqlcipher.database.SQLiteDatabase.execSQL(java.lang.String)
9: net.sqlcipher.database.SQLiteCompiledSql net.sqlcipher.database.SQLiteDatabase.getCompiledStatementForSql(java.lang.String)
10: java.lang.String net.sqlcipher.database.SQLiteDatabase.getPath()
11: int net.sqlcipher.database.SQLiteDatabase.getVersion()
12: long net.sqlcipher.database.SQLiteDatabase.insert(java.lang.String, java.lang.String, android.content.ContentValues)
13: long net.sqlcipher.database.SQLiteDatabase.insertWithOnConflict(java.lang.String, java.lang.String, android.content.ContentValues, int)
14: boolean net.sqlcipher.database.SQLiteDatabase.isOpen()
15: boolean net.sqlcipher.database.SQLiteDatabase.isReadOnly()
16: int net.sqlcipher.database.SQLiteDatabase.lastChangeCount()
17: long net.sqlcipher.database.SQLiteDatabase.lastInsertRow()
18: void net.sqlcipher.database.SQLiteDatabase.lock()
19: void net.sqlcipher.database.SQLiteDatabase.native_execSQL(java.lang.String)
20: void net.sqlcipher.database.SQLiteDatabase.onAllReferencesReleased()
21: void net.sqlcipher.database.SQLiteDatabase.onCorruption()
22: net.sqlcipher.Cursor net.sqlcipher.database.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String)
23: net.sqlcipher.Cursor net.sqlcipher.database.SQLiteDatabase.query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String)
24: net.sqlcipher.Cursor net.sqlcipher.database.SQLiteDatabase.queryWithFactory(net.sqlcipher.database.SQLiteDatabase$CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String)
25: net.sqlcipher.Cursor net.sqlcipher.database.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])
26: net.sqlcipher.Cursor net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(net.sqlcipher.database.SQLiteDatabase$CursorFactory, java.lang.String, java.lang.String[], java.lang.String)
27: void net.sqlcipher.database.SQLiteDatabase.removeSQLiteClosable(net.sqlcipher.database.SQLiteClosable)
09-11 15:48:23.878 30829-30878/com.dell.prapproval E/art: 28: void net.sqlcipher.database.SQLiteDatabase.setTransactionSuccessful()
29: void net.sqlcipher.database.SQLiteDatabase.setVersion(int)
30: void net.sqlcipher.database.SQLiteDatabase.unlock()
31: int net.sqlcipher.database.SQLiteDatabase.update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[])
32: int net.sqlcipher.database.SQLiteDatabase.updateWithOnConflict(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[], int)
direct methods (29 entries):
0: void net.sqlcipher.database.SQLiteDatabase.<clinit>()
1: void net.sqlcipher.database.SQLiteDatabase.<init>(java.lang.String, net.sqlcipher.database.SQLiteDatabase$CursorFactory, int, net.sqlcipher.DatabaseErrorHandler)
2: void net.sqlcipher.database.SQLiteDatabase.access$000(net.sqlcipher.database.SQLiteDatabase, byte[])
3: void net.sqlcipher.database.SQLiteDatabase.access$100(net.sqlcipher.database.SQLiteDatabase, char[])
4: void net.sqlcipher.database.SQLiteDatabase.checkLockHoldTime()
5: void net.sqlcipher.database.SQLiteDatabase.closeClosable()
6: boolean net.sqlcipher.database.SQLiteDatabase.containsNull(char[])
09-11 15:48:23.880 30829-30878/com.dell.prapproval E/art: 7: net.sqlcipher.database.SQLiteDatabase net.sqlcipher.database.SQLiteDatabase.create(net.sqlcipher.database.SQLiteDatabase$CursorFactory, char[])
8: void net.sqlcipher.database.SQLiteDatabase.dbclose()
9: void net.sqlcipher.database.SQLiteDatabase.dbopen(java.lang.String, int)
10: void net.sqlcipher.database.SQLiteDatabase.deallocCachedSqlStatements()
11: void net.sqlcipher.database.SQLiteDatabase.enableSqlProfiling(java.lang.String)
12: void net.sqlcipher.database.SQLiteDatabase.enableSqlTracing(java.lang.String)
13: java.lang.String net.sqlcipher.database.SQLiteDatabase.findEditTable(java.lang.String)
14: byte[] net.sqlcipher.database.SQLiteDatabase.getBytes(char[])
15: java.lang.String net.sqlcipher.database.SQLiteDatabase.getTime()
16: void net.sqlcipher.database.SQLiteDatabase.key(byte[])
17: void net.sqlcipher.database.SQLiteDatabase.keyDatabase(net.sqlcipher.database.SQLiteDatabaseHook, java.lang.Runnable)
18: void net.sqlcipher.database.SQLiteDatabase.key_mutf8(char[])
19: void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context)
20: void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context, java.io.File)
21: void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context, java.io.File, net.sqlcipher.database.SQLiteDatabase$LibraryLoader)
22: void net.sqlcipher.database.SQLiteDatabase.lockForced()
23: net.sqlcipher.database.SQLiteDatabase net.sqlcipher.database.SQLiteDatabase.openDatabase(java.lang.String, char[], net.sqlcipher.database.SQLiteDatabase$CursorFactory, int)
24: net.sqlcipher.database.SQLiteDatabase net.sqlcipher.database.SQLiteDatabase.openDatabase(java.lang.String, char[], net.sqlcipher.database.SQLiteDatabase$CursorFactory, int, net.sqlcipher.database.SQLiteDatabaseHook, net.sqlcipher.DatabaseErrorHandler)
25: void net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal(char[], net.sqlcipher.database.SQLiteDatabaseHook)
26: net.sqlcipher.database.SQLiteDatabase net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(java.lang.String, char[], net.sqlcipher.database.SQLiteDatabase$CursorFactory, net.sqlcipher.database.SQLiteDatabaseHook, net.sqlcipher.DatabaseErrorHandler)
27: void net.sqlcipher.database.SQLiteDatabase.rekey(byte[])
28: void net.sqlcipher.database.SQLiteDatabase.unlockForced()
static fields (4 entries):
0: java.lang.String[] net.sqlcipher.database.SQLiteDatabase.CONFLICT_VALUES
1: java.util.regex.Pattern net.sqlcipher.database.SQLiteDatabase.EMAIL_IN_DB_PATTERN
2: java.util.WeakHashMap net.sqlcipher.database.SQLiteDatabase.sActiveDatabases
3: int net.sqlcipher.database.SQLiteDatabase.sQueryLogTimeInMillis
instance fields (27 entries):
0: int net.sqlcipher.database.SQLiteDatabase.mCacheFullWarnings
1: java.util.Map net.sqlcipher.database.SQLiteDatabase.mCompiledQueries
2: net.sqlcipher.DatabaseErrorHandler net.sqlcipher.database.SQLiteDatabase.mErrorHandler
3: net.sqlcipher.database.SQLiteDatabase$CursorFactory net.sqlcipher.database.SQLiteDatabase.mFactory
4: int net.sqlcipher.database.SQLiteDatabase.mFlags
5: boolean net.sqlcipher.database.SQLiteDatabase.mInnerTransactionIsSuccessful
6: long net.sqlcipher.database.SQLiteDatabase.mLastLockMessageTime
7: java.lang.String net.sqlcipher.database.SQLiteDatabase.mLastSqlStatement
8: java.util.concurrent.locks.ReentrantLock net.sqlcipher.database.SQLiteDatabase.mLock
9: long net.sqlcipher.database.SQLiteDatabase.mLockAcquiredThreadTime
10: long net.sqlcipher.database.SQLiteDatabase.mLockAcquiredWallTime
11: boolean net.sqlcipher.database.SQLiteDatabase.mLockingEnabled
12: int net.sqlcipher.database.SQLiteDatabase.mMaxSqlCacheSize
13: long net.sqlcipher.database.SQLiteDatabase.mNativeHandle
14: int net.sqlcipher.database.SQLiteDatabase.mNumCacheHits
15: int net.sqlcipher.database.SQLiteDatabase.mNumCacheMisses
16: java.lang.String net.sqlcipher.database.SQLiteDatabase.mPath
17: java.lang.String net.sqlcipher.database.SQLiteDatabase.mPathForLogs
18: java.util.WeakHashMap net.sqlcipher.database.SQLiteDatabase.mPrograms
19: int net.sqlcipher.database.SQLiteDatabase.mSlowQueryThreshold
20: java.lang.Throwable net.sqlcipher.database.SQLiteDatabase.mStackTrace
21: java.util.Map net.sqlcipher.database.SQLiteDatabase.mSyncUpdateInfo
22: int net.sqlcipher.database.SQLiteDatabase.mTempTableSequence
23: java.lang.String net.sqlcipher.database.SQLiteDatabase.mTimeClosed
24: java.lang.String net.sqlcipher.database.SQLiteDatabase.mTimeOpened
25: boolean net.sqlcipher.database.SQLiteDatabase.mTransactionIsSuccessful
26: net.sqlcipher.database.SQLiteTransactionListener net.sqlcipher.database.SQLiteDatabase.mTransactionListener
I've even added ndk
support code to build.gradle
, but that error is still coming. How can I fix it?
I assume you're obfuscating app. Did you apply proguard configuration from SQLChipher?
Unfortunately, they build it as aar library but don't include proguard configuration to it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With