前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )

【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )

作者头像
韩曙亮
发布2023-03-30 11:17:48
5500
发布2023-03-30 11:17:48
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

Android Plugin DSL Reference 参考文档 : https://google.github.io/android-gradle-dsl/2.3/

一、settings.gradle 映射为 Settings 类


根目录下的 settings.gradle 脚本 , 编译时被映射为 Settings 类 ;

settings 中可以直接调用 Settings 接口中的方法 , 查看 include 方法 , 发现该 include 方法定义在 Settings 接口中 ;

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
@HasInternalProtocol
public interface Settings extends PluginAware, ExtensionAware {
    /**
     * <p>设置文件的默认名称。</p>
     */
    String DEFAULT_SETTINGS_FILE = "settings.gradle";
    
    /**
     * <p>将给定的项目添加到生成中。
     * 提供的列表中的每个路径都被视为要添加到生成中的项目的路径。
     * 请注意,这些路径不是文件路径,而是指定新项目在项目层次结构中的位置。
     * 因此,提供的路径必须使用“:”字符作为分隔符(而不是“/”)。</p>
     *
     * <p>提供的路径的最后一个元素用作项目名称。
     * 提供的路径将转换为相对于根项目目录的项目目录。
     * 包含项目后,可以通过更改“projectDir”属性来更改项目目录 (see {@link ProjectDescriptor#setProjectDir(File)})</p>
     *
     * <p>例如,路径{@code a:b}添加了一个带有路径{@code:a:b}、名称{@code b}和项目目录{@code$rootDir/a/b}的项目。
     * 它还添加了路径为{@code:a}、名称为{@code a}、项目目录为{@code$rootDir/a}的项目,如果它还不存在的话。</p>
     *
     * <p>使用项目路径的一些常见示例如下:</p>
     *
     * <pre class='autoTestedSettings'>
     *   // 包括两个项目,“foo”和“foo:bar”
     *   // 通过将“:”替换为“/”来推断目录
     *   include 'foo:bar'
     *
     *   // 包括一个项目,其项目目录与逻辑项目路径不匹配
     *   include 'baz'
     *   project(':baz').projectDir = file('foo/baz')
     *
     *   // 包括许多其项目目录与逻辑项目路径不匹配的项目
     *   file('subprojects').eachDir { dir -&gt;
     *     include dir.name
     *     project(":${dir.name}").projectDir = dir
     *   }
     * </pre>
     *
     * @param projectPaths 要添加的项目。
     */
    void include(String... projectPaths);
}

二、build.gradle 映射为 Project 类


Module 模块下的 build.gradle 会被映射为 Project 类 , 因此在 build.gradle 中可以直接调用 Project 中的方法 ;

查看 build.gradle 中的 dependencies 方法源码 , 该方法定义在 Project.java 中 ;

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
@HasInternalProtocol
public interface Project extends Comparable<Project>, ExtensionAware, PluginAware {
    /**
     * 默认的项目生成文件名。
     */
    String DEFAULT_BUILD_FILE = "build.gradle";

    /**
     * <p>配置此项目的依赖项。
     *
     * <p>此方法对该项目的{@link DependencyHandler}执行给定的闭包。这个 {@link
     * DependencyHandler} 作为闭包的委托传递给闭包。
     *
     * <h3>Examples:</h3>
     * See docs for {@link DependencyHandler}
     *
     * @param configureClosure 用于配置依赖项的闭包。
     */
    void dependencies(Closure configureClosure);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、settings.gradle 映射为 Settings 类
  • 二、build.gradle 映射为 Project 类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档