gpt4 book ai didi

android - 如何在根 gradle.build 脚本中指定通用的 gradle 属性

转载 作者:搜寻专家 更新时间:2023-11-01 09:31:42 27 4
gpt4 key购买 nike

我有大量的 gradle 模块用于构建我的 android 应用程序和库。我的应用程序被分解为多个 Java 和 C++ 库。每个模块可能是一个 java 库或一个 APK 项目。对于代表 APK 的每个模块,我都有一个 build.gradle,它指定了控制如何构建它们的各种 productFlavors 部分。示例:

   flavorDimensions "mode"

productFlavors {
arm {
dimension "mode"
externalNativeBuild {
ndk { abiFilters "armeabi-v7a" }
}
}

x86 {
dimension "mode"
externalNativeBuild {
ndk { abiFilters "x86" }
}
}

full {
dimension "mode"
externalNativeBuild {
ndk { abiFilters "x86", "armeabi-v7a" }
}
}
}

我试图避免的是在代表 APK 输出的每个叶子 build.gradle 中复制上述配置。我怎样才能在根级别存储产品 flavor ,并以某种方式将这些传递到离开 build.gradle 文件,这样我就不需要复制它们了?

最佳答案

支持库做的事情非常相似,你可以 see their method here (特别是 the SupportLibraryPlugin )。

在高层次上,该策略是在您应用于每个项目的 buildSrc 目录中创建一个 Gradle 插件。此插件将应用通用配置。

您的插件可能看起来像这样:[项目]/buildSrc/src/main/groovy/com/example/ConfigurationPlugin.groovy

class ConfigurationPlugin implements Plugin<Project> {

@Override
public void apply(Project project) {
LibraryExtension library = project.extensions.findByType(LibraryExtension.class);

library.flavorDimensions "mode"

library.productFlavors {
arm {
dimension "mode"
externalNativeBuild {
ndk { abiFilters "armeabi-v7a" }
}
}

x86 {
dimension "mode"
externalNativeBuild {
ndk { abiFilters "x86" }
}
}

full {
dimension "mode"
externalNativeBuild {
ndk { abiFilters "x86", "armeabi-v7a" }
}
}
}

}
}

[项目]/builSrc/build.gradle

apply plugin: 'groovy'

repositories {
google()
}

dependencies {
compile 'com.android.tools.build:gradle:3.0.0-beta7'
}

库模块build.gradle:

apply plugin: 'com.android.library'
apply plugin: ConfigurationPlugin

android {
// ...
}

关于android - 如何在根 gradle.build 脚本中指定通用的 gradle 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46649200/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com