如何在build.gradle中指定Android应用程序支持的架构?

15

我的Android应用程序只支持arm64-v8a和armeabi-v7a,但由于其中一个依赖项,我在apk的lib文件夹中看到以下内容:

arm64-v8a
armeabi
armeabi-v7a
mips
x86
x86_64

这是我的 build.gradle 文件:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}


android {
    compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
    buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION

    defaultConfig {
        applicationId "com.mycompany.myapp"
        minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
        targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        versionCode Integer.parseInt(project.VERSION_CODE)
        versionName project.VERSION_NAME
        multiDexEnabled true
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true // https://developer.android.com/topic/performance/reduce-apk-size.html
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.android.support:support-v4:24.0.0'
}


// Must follow the above play-services compile directives
apply plugin: 'com.google.gms.google-services'

如何在Android Studio的build.gradle中指定支持的架构?

2个回答

22

将以下内容添加到您的build.gradle中的构建类型中

ndk {
  abiFilters "armeabi-v7a", "arm64-v8a"
}

13
对于其他人的疑问:根据此文档,这段代码需放在 app/build.gradle 中的 defaultConfig 部分中:https://developer.android.com/studio/projects/gradle-external-native-builds.html#specify-abi - Frederik
这也可以运行:ndkConfig.abiFilters "armeabi-v7a", "arm64-v8a" - Gumby The Green

11
为了更加详细,你有两个选项: 1. 在你的应用程序 build.gradle 文件中,为一个 buildType 指定 abiFilters:

要添加更多细节,您有两个选项: 1. 在您的 app build.gradle 文件中,为一个 buildType 指定 abiFilters:

buildTypes {
  debug { 
     ndk {
       abiFilters "x86", "armeabi-v7a", "armeabi"
       //abiFilters ABI_FILTERS
     }
   }
}
  1. 在gradle.settings文件中指定abiFilters,并在应用程序build.gradle中引用它们以进行构建类型:

gradle.settings:


ABI_FILTERS=armeabi-v7a;x86

应用程序的 build.gradle 文件:

buildTypes{
ndk {
  abiFilters = []
    abiFilters.addAll(ABI_FILTERS.split(';').collect{it as String})
  }
}

5
你是怎么知道这些东西的?这些带花括号的神奇单词的文档在哪里? - mondaugen
请修复您的 ndk {abiFilters = [] 行上的错误缩进。这很令人困惑。 - Gumby The Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接