3

私はSQL Cipherを初めて使用します。私は多くのものを読み、SQLCipher をプロジェクトに実装しました。

以下の JAR ファイルをapp/src/libsに配置しました

  • commons-codec.jar
  • グアバ-r09.jar
  • sqlcipher.jar
  • sqlcipher-javadoc

以下のファイルをapp/src/main/assetsに入れました

  • icudt46l.zip

以下のファイルをapp/src/main/jniLibsに入れました

  1. フォルダー内: armeabi

    • libdatabase_sqlcipher.so
    • libsqlcipher_android.so
    • libstlport_shared.so
  2. フォルダー内: armeabi-v7a

    • libdatabase_sqlcipher.so
    • libsqlcipher_android.so
    • libstlport_shared.so
  3. フォルダー内: x86

    • libdatabase_sqlcipher.so
    • libsqlcipher_android.so
    • libstlport_shared.so

Androidスタジオの私のgradleファイルの下。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "abc.com.sqlcipher"
        minSdkVersion 10
        targetSdkVersion 22
        versionCode 1
       versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
}

この後、アプリケーションを実行すると、毎回以下のエラーでクラッシュします。

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/abc.com.sqlcipher-1/base.apk"],nativeLibraryDirectories=[/data/app/abc.com.sqlcipher-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "liblibstlport_shared.so"
4

1 に答える 1

3

4 ~ 5 時間後、友人の 1 人から解決策が得られました。

以下のコードをbuild.gradleファイルのandroid{}ブロックの前に記述します。

repositories {
    maven {
        url "https://s3.amazonaws.com/repo.commonsware.com"
    }
}

以下の行を依存関係 {}ブロックに書き込みます。

compile 'com.commonsware.cwac:sqlcipher-for-android:3.3.1'

プロジェクトを同期すると、SQL-Cipher Database をアプリケーションで簡単に使用できます。

于 2015-08-22T14:35:07.003 に答える