1. ホーム
  2. android

[解決済み] Android Studioで*.soライブラリをインクルードするには?

2022-05-09 13:19:22

質問

Android Studioに*.soライブラリを追加する方法を多くのスレッドで読みましたが、どれもうまくいかず、特にテキストの点ではうまくいきません。これは、新しいXXX(Android Studio、gradle、...)では動作しません。

再出発をお願いします。と言われた。

Android Studio 0.6.0

Project Structureから見ると。

SDKの場所。

/usr/share/android-studio/data/sdk
/usr/lib/jvm/default-java

プロジェクト

Gradle version 1.10
Android Plugin Version 0.11.+

モジュール/app: プロパティです。

コンパイルSdkバージョン19 ビルドツールバージョン19.1.0

依存関係

{dir=libs, include=[*.jar]} Compile

{dir=libs, include=[*.so]}  Provided

m com.android.support: appcompat -v7:19.+   Compile

.soファイルをプリコンパイルして、デモアプリでは動作しています。アプリのソースコードを変更しなければならないので、同じ*.soファイルで再構築する必要があります。

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

現在の解決策

フォルダの作成 project/app/src/main/jniLibs を作成し、その上に *.so ファイルを、その場所のabiフォルダ内に配置します。例えば

project/
├──libs/
|  └── *.jar       <-- if your library has jar files, they go here
├──src/
   └── main/
       ├── AndroidManifest.xml
       ├── java/
       └── jniLibs/ 
           ├── arm64-v8a/                       <-- ARM 64bit
           │   └── yourlib.so
           ├── armeabi-v7a/                     <-- ARM 32bit
           │   └── yourlib.so
           └── x86/                             <-- Intel 32bit
               └── yourlib.so

非推奨のソリューション

モジュール gradle.build ファイルに両方のコードスニペットを依存関係として追加してください。

compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')

このカスタム jar の作成方法。

task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

同じ回答が、関連する質問にもあります。 android studioでapkに.soライブラリをインクルードする。