1. ホーム
  2. android

[解決済み] android studioでapkに.soライブラリをインクルードする [重複].

2022-05-13 10:51:06

質問

私は簡単なアンドロイドアプリケーションの開発に挑戦しています。 暗号化 を使おうとしています。これは内部的に .so ライブラリを使用します。私は アンドロイドアプリで sqlcipher を使用する方法 . ステップに従ったところ、エラーなしでコンパイルされました。しかし、実行時に UnsatisfiedLinkError .

ぐぐってみると、ありました。 gradleはまだ.soライブラリをサポートしていません。 とのことですが、ハックを発見しました。 ここで を見つけ、それを使おうとしています。しかし、それはgistの40行目でコンパイルタイムエラーをスローします。

tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
    pkgTask.jniDir new File(buildDir, 'native-libs')
}

と言う

プロジェクト 'MyProject' でプロパティ 'com' が見つかりませんでした。

build.gradleファイルからコードを投稿します。

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/commons-codec.jar')
    compile files('libs/guava-r09.jar')
    compile files('libs/sqlcipher.jar')
}

targetCompatibility = 1.6
sourceCompatibility = 1.6

android {
    target = 'android-14'

    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 16
    }    

}

task copyNativeLibs(type: Copy) {
    from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }
    into new File(buildDir, 'native-libs')
}

tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
    pkgTask.jniDir new File(buildDir, 'native-libs')
}

どなたか、私が何を間違えたのか、あるいはこれらの.soライブラリを私のapkに含めるにはどうしたらよいのか、教えていただけませんか?

私はアンドロイド開発とgradleに新しいので、私が何かを誤解している場合、私を謝罪してください。

どのように解決するのですか?

私も同じような問題を抱えていました。のコメントを確認してください。 https://gist.github.com/khernyo/4226923#comment-812526

と書いてあります。

gradle android plugin v0.3では、"com.android.build.gradle.tasks.PackageApplication"を使用してください。

これで問題が解決するはずです。