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

标签 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()
    }
}

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

   /arm64-v8a/file1_so.so
   /armeabi-v7a/file1_so.so
   /x86/file1_so.so
   /x86_64/file1_so.so

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

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

最佳答案

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

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

            jniLibs {
                srcDir 'src/main/libs'
            }
        }
    }
}

关于android - 如何在 Android-gradle 应用程序中包含 *.so 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414950/

相关文章:

gradle - 如何在 Gradle 中创建包含项目 jars 和 war 的分发存档 (zip)

gradle - Kotlin Quasar 示例不起作用

android - 如何在 android 中使用内部 expat XML 解析器?

Android KTX 或 Anko

android - 如何在支持双卡双待的手机中选择主卡来发送短信?

java - Micronaut - shadow fat-jar 插件不适用于公司 repo

unit-testing - 在 gradle 根项目上运行测试任务不会在子项目上运行测试任务

android - 如何将 ViewBinding 与抽象基类一起使用

android - 问题 Android 设备 - Charles 代理 - 互联网连接

groovy - 用Gradle,Groovy和spring-boot加载springspring失败,并出现java.lang.NoSuchFieldException:classCache