【问题标题】:run common gradle code in android base project gradle file在 android 基础项目 gradle 文件中运行通用 gradle 代码
【发布时间】:2023-04-04 08:13:01
【问题描述】:

我有一个使用我们所有应用程序的库。 除了共享代码和资源,我想共享 gradle 代码。 每个应用程序的构造: 一些应用程序/ | - 设置.gradle - 构建.gradle | - mylib/ | -build.gradle - 其他库/ - 应用程序/ | - build.gradle

现在我说的是根目录中的 build.gradle。一种定义 buildScript 闭包的依赖项和 allprojects{} 闭包。

我尝试使用 apply from: './mylib/gradle_files/baseProject.gradle' 它可以工作,但是我的应用程序找不到 android 插件。由于某种原因,类路径依赖项没有注入到构建脚本中! 然后我尝试创建一个列表并使用它:

ext.projectBaseDependencies = ['com.android.tools.build:gradle:2.1.2', 'com.google.gms:google-services:3.0.0']

然后我在闭包中使用了该列表:

apply from: './mylib/gradle_files/baseProject.gradle'

构建脚本 { 存储库{ 中心() } 依赖{ 类路径 projectBaseDependencies } }

它不起作用,gradle 没有找到我在 baseProject.gradle 中定义的变量。 我有一种预感,适用于评估 buildScript 闭包后的作品:-(

有没有办法在所有应用程序之间共享 gradle 脚本代码?如果不申请,什么可以工作?在 afterEvaluate {} 子句中跳过配置和配置?

【问题讨论】:

    标签: android gradle shared configure


    【解决方案1】:

    为什么不在公共库中使用 Gradle 文件?如果您的公共库包含build.gradle 文件,您可以应用android 库插件:

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"
    
        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
    
            consumerProguardFiles "proguard-rules.pro"
        }
    }
    
    dependencies {
        // Your common dependencies here
    }
    

    然后你可以在你项目的settings.gradle中包含这个库:

    include ':mobile'
    project(':common').projectDir = new File("/Users/example/path/to/common")
    

    然后将其添加到项目的build.gradle中的依赖项中:

    dependencies {
        compile project(':common')
        // Your other project dependencies
    }
    

    【讨论】:

    • 现在确实允许共享构建脚本本身的属性,对于应用程序的 gradle 文件和库的 gradle 文件,我可以毫无问题地使用“应用自:”它只是在根构建中, gadle 文件和 bildScript{} 闭包
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多