【问题标题】:How to include *.so file in Android-gradle application? [duplicate]如何在 Android-gradle 应用程序中包含 *.so 文件? [复制]
【发布时间】:2015-04-02 14:06:02
【问题描述】:

我需要做一件简单的事情:在项目中包含 .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 中?

【问题讨论】:

  • 你看到我的回答了吗?
  • @JaredBurrows,是的,但是我在看到它之前已经修复了它,我不记得确切的方法,但更简单。
  • 你能选择一个答案吗?
  • @JaredBurrows 是的,我可以选择一个答案。

标签: android gradle


【解决方案1】:

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

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

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

【讨论】:

  • @AlexanderSupertramp 为什么投反对票?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2019-05-17
  • 2015-09-29
  • 2016-08-19
  • 2012-05-28
相关资源
最近更新 更多