android - 如何覆盖 buildTypes 中的 defaultConfig abiFilters

标签 android gradle android-gradle-plugin

abiFilters 在 android build.gradle defaultConfig block 中设置。

我想从发布 buildType 中排除 x86,但找不到简单的方法来做到这一点

这是build.gradle:

defaultConfig {
    ndk {
        abiFilters "armeabi", "x86"
        moduleName "cipher_v1"
        cFlags "-DRELEASE=1"
        if (rootProject.ext.has("testCrack")) {
            cFlags += " -DTEST_CRACK"
        }
        if (project.ext.has("authKey") && project.ext.has("androidId")) {
            cFlags += "-DAUTH_KEY=\\\"" + project.ext.authKey + "\\\""
            "-DANDROID_ID=\\\"" + project.ext.androidId + "\\\""
        }
    }
}

buildTypes {
   release {
        ndk {
            abiFilters "armeabi"
        }
    }
}

这是我得到的:

unzip -l base-release.aar|grep cipher
17752  02-01-1980 00:00   jni/armeabi/libcipher_v1.so
17640  02-01-1980 00:00   jni/x86/libcipher_v1.so

这是我真正想要的:

unzip -l base-release.aar|grep cipher
17752  02-01-1980 00:00   jni/armeabi/libcipher_v1.so

我想在 defautlConfig block 中保留完整的 abiFilters

并在某些buildType

中指定

编辑 1:

是的,在 debugrelease block 中删除 defaultConfig 并设置 abiFilters 会起作用。但我的问题是如何利用 defaultConfig

最佳答案

提供命令行选项,例如“no_x86

  1. 将下面添加到您的 app/build.gradle

    defaultConfig {
        ndk {
    
            ...
            if (project.hasProperty("no_x86")) {
                abiFilters "armeabi"
            } else {
                abiFilters "armeabi", "x86"
            }
    
            ...
        }
    }
    
  2. 通过向命令提供选项 no_x86,使用下面的命令生成没有 x86 ABI 的 APK。

    ./gradlew assemble -Pno_x86
    

    但如果您想使用 x86 abi 构建 APK,请不要将选项 no_x86 提供给命令。由于 defaultConfig 是根据您的要求保留完整的 abiFilters。

    对于某些buildType,您可以通过输入或不输入-Pno_x86属性来调用相应的构建命令。例如。 ./gradlew assembleRelease -Pno_x86

引用: https://stackoverflow.com/a/52980193/8034839

关于android - 如何覆盖 buildTypes 中的 defaultConfig abiFilters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322169/

相关文章:

gradle - 从根多项目构建本地依赖

java - 如何使用 Gradle 为测试和生产代码指定不同的(PMD、Checkstyle、Findbugs)规则集?

android - Android Studio 项目开启时间过长

android - 单击Cast Mini Controller时android应用崩溃

java - 如何使用 libgdx 在 IntelliJ 中导入通用补间引擎

Android Layout 效率,多 View 还是单 View 隐藏?

java - 如何知道 Activity 已经完成?

java - Android Studio 是否有 NonNullByDefault 注解

android - 塑造 Android Material Design

android - 在Android Studio和AppCenter中,Gradle都找不到Flutter构建的APK