android - 在 android 基础项目 gradle 文件中运行通用 gradle 代码

标签 android gradle shared configure

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

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

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

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 {} 子句中跳过配置和配置?

最佳答案

为什么不在公共(public)库中使用 Gradle 文件?如果您的公共(public)库包含 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
}

关于android - 在 android 基础项目 gradle 文件中运行通用 gradle 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37819971/

相关文章:

javascript - 使用来自已加载网页的 JavaScript 调用重新加载 WebView

windows - 在 Windows 中查看共享内存的程序?

android - 如何在另一个库中包含一个 Android 库模块?

java - 使用 build.gradle 将 twilio java 库放入 android 项目的问题

gradle脚本,直接dsl和 “apply from:”的自定义函数调用有什么区别

c# - 通过 EWS 和 C# 访问没有邮箱的资源日历

c - 是否可以将一段共享内存变成私有(private)内存?

android - 谷歌地图发布 API key 不起作用

android - 根据微调器选择禁用按钮

android - APK部署错误