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

我想从 release 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

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

并在某些 buildType 中指定

编辑 1:

是的,在 defaultConfigabiFilters 块中删除 debug 并设置 release 会起作用。但我的问题是如何利用 defaultConfig

最佳答案

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

  • 在您的 app/build.gradle 下面添加
    defaultConfig {
        ndk {
    
            ...
            if (project.hasProperty("no_x86")) {
                abiFilters "armeabi"
            } else {
                abiFilters "armeabi", "x86"
            }
    
            ...
        }
    }
    
  • 通过将选项 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

    10-08 06:47