如何在Android-gradle应用程序中包含*.so文件?

アレッ*_*ックス 2 android gradle

我需要做一件简单的事情:在项目中包含.so.这就是我现在拥有的:

# app/build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "my.app.123"
        minSdkVersion 14
        targetSdkVersion 22

        versionCode 7113
        versionName "7113"
    }


    productFlavors {
        x86 {
            ndk {
                abiFilter "x86", "x86_64"
            }
        }
        arm {
            ndk {
                abiFilters "armeabi-v7a", "armeabi"
            }
        }

    }
}



dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'io.pristine:libjingle:8871'
}

# build.gradle
all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

我在src/src/main/jniLibs中有这些"so"文件:

   /arm64-v8a/file1_so.so
   /armeabi-v7a/file1_so.so
   /x86/file1_so.so
   /x86_64/file1_so.so
Run Code Online (Sandbox Code Playgroud)

但是,当我启动我的应用程序时,我收到一个错误,这意味着应用程序正在使用之前已嵌入其中的"旧" so文件.所以我不确定这些文件是否会被编译到结果apk中.

我应该怎么做才能将它们包含在输出apk中?

Jar*_*ows 6

以下是我如何将我的预构建*.so引入我的应用程序,只需确保您*.sosrc/main/libs文件夹中:

android {
    ...
    sourceSets {
        //noinspection GroovyAssignabilityCheck
        main {
            jni {
                srcDirs = []
            }

            jniLibs {
                srcDir 'src/main/libs'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)