首页
学习
活动
专区
圈层
工具
发布

Gradle 与 AGP 构建 API: 如何编写插件

通过上篇文章《Gradle 与 AGP 构建 API: 配置您的构建文件》您已经了解 Gradle 的基础知识以及如何配置 Android Gradle Plugin。...Android Gradle Plugin 从 7.0 版开始提供稳定的扩展点,用于操作变体配置和生成的构建产物。...接下来,我为插件项目创建了一个 build.gradle.kts 文件,这样 Gradle 就会自动将此文件夹添加至构建。 这是项目根文件夹中的顶层目录。注意,我并不需要在我的项目中将其添加为模块。...变体由多个构建类型组合而成,例如 debug 与 release,以及构建脚本中定义的产品变种。 在您的构建文件中,使用声明式 DSL 添加构建类型是完全没有问题的。...不过,在代码中以这种方式让您的插件影响构建是不可能的,或者说难以使用声明式语法进行表达。 AGP 通过解析构建脚本及 android 块中设置的属性来启动构建。

1.2K30

将构建配置从 Groovy 迁移到 KTS

一次迁移一个文件 由于您可以在项目中结合使用 Groovy build 文件和 KTS build 文件,因此将项目转换为 KTS 的一个简单方法是先选择一个简单的 build 文件(例如 settings.gradle...IDE 可使用这些信息执行代码补全并提供其他实用建议,从而帮助您解决 KTS 文件中存在的问题。 在您的代码中,将命令式 apply plugin 替换为声明式 plugins 代码块。...如果插件来自插件门户中不存在的 buildScript 依赖项,那么这些插件在 Kotlin 中就必须使用 apply 才能应用。...有两个关键的最佳实践可以更轻松地在 Kotlin DSL 的静态上下文中工作: 使用plugins {}块 将本地构建逻辑放在构建的buildSrc目录中 该plugins {}块是关于保持您的构建脚本声明性...Groovy语言构建的时候,往往会抽取一个version_config.gradle来作为全局的变量控制,而ext扩展函数则是必须要使用到的,而在我们的Gradle Kotlin DSL中,如果想要使用全局控制

4.3K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    将构建配置从 Groovy 迁移到 KTS

    一次迁移一个文件 由于您可以在项目中结合使用 Groovy build 文件和 KTS build 文件,因此将项目转换为 KTS 的一个简单方法是先选择一个简单的 build 文件(例如 settings.gradle...IDE 可使用这些信息执行代码补全并提供其他实用建议,从而帮助您解决 KTS 文件中存在的问题。 在您的代码中,将命令式 apply plugin 替换为声明式 plugins 代码块。...如果插件来自插件门户中不存在的 buildScript 依赖项,那么这些插件在 Kotlin 中就必须使用 apply 才能应用。...有两个关键的最佳实践可以更轻松地在 Kotlin DSL 的静态上下文中工作: 使用plugins {}块 将本地构建逻辑放在构建的buildSrc目录中 该plugins {}块是关于保持您的构建脚本声明性...Groovy语言构建的时候,往往会抽取一个version_config.gradle来作为全局的变量控制,而ext扩展函数则是必须要使用到的,而在我们的Gradle Kotlin DSL中,如果想要使用全局控制

    2.3K20

    Gradle Kotlin DSL指南

    可以在依赖项声明和configurations{}块中为配置名使用字符串字面量。 在这种情况下,IDE无法帮助你发现可用的配置,但你可以在相应的插件文档或运行gradle依赖项中查找它们。...使用Gradle插件一章解释了如何在根项目构建脚本中声明一个版本的插件,然后将它们应用到相应子项目的构建脚本中。下面是一个使用三个子项目和三个插件的方法示例。...注意,根构建脚本只声明社区插件,因为Java库插件是绑定到你使用的Gradle版本的: 使用plugins{}块在根构建脚本中声明插件依赖项 settings.gradle.kts rootProject.name...如果这些artifacts丢失了,那么您就不能使用plugins{}块。你必须转而使用根项目构建脚本中的buildscript{}块来声明你的插件依赖项。...例如,如果我们引入了一个新的API来解决依赖关系,而一个插件想要使用这个API,那么他们要么需要放弃对旧版本Gradle的支持,要么需要做一些事情。

    12.3K20

    Android基础(二)了解Android项目

    build.gradle,位于每个模块目录下,用于声明模块所需的库依赖(如第三方库、Android SDK 组件等),支持本地文件、远程仓库(如 Maven)或项目内其他模块,就是我们当前模块可以依赖另一个模块..., 1.1.2.3 注意事项   一个项目可以有多个模块,而我们发现build.gradle.kts,有一个kts的文件后缀,这是表示,这个文件使用Kotlin语言编写的,如果没有这个后缀就是Groovy...它允许开发者在不预先安装 Gradle 的情况下,自动下载并使用正确的 Gradle 版本来构建项目,确保团队协作和持续集成(CI)环境中的构建一致性。...settings.gradle.kts 也是 Kotlin 版本的 Gradle 项目配置文件,用于定义项目的模块结构和全局构建逻辑。...文件是 Android 项目的核心配置文件,使用 Kotlin DSL 编写,主要定义了 Gradle 插件管理、依赖仓库策略和项目模块结构。

    96131

    Android—Gradle教程(九)完结篇

    8 } } dexOptions一些设置说明: preDexLibraaies : 声明是否对依赖的库进行dex 预处理来使你的增量构建更快速,因为这个特性可能会使你的clean 构建变慢,...1.6 构建一个变体 有许多配置是你在准备app的release 版本的时候需要,但是当你开发app的时候是不需要的,开启不必要的构建进程会使你的增量构建或者clean构建变得很慢,因此需要构建一个只保留开发时需要配置的变体...当你在build.gradle文件中声明依赖的时候,你应该避免在版本号结束的地方使用+号,比如:com.android.tools.build:gradle:4.+ 因为Gradle的检查更新,用动态的版本号会导致未知的版本更新...2、Gradle Kotlin DSL 2.1 Kotlin DSL优缺点: Android Gradle插件4.0支持在Gradle构建配置中使用Kotlin脚本 (KTS),用于替代 Groovy(...2.2 何为KTS? KTS:是指Kotlin脚本,这是Gradle在构建配置文件中使用的一种Kotlin语言形式。Kotlin脚本是可从命令行运行的Kotlin代码。

    4.1K20

    用 Kotlin 脚本(KTS)重塑 Android 工程效能:2000 字终极实践指南

    耗时差异 冷构建 42s 48s +14% 增量构建 8.2s 8.6s +4.8%配置错误修复平均 7min 30s -86% 数据来源:Android Dev...(Libs.composeUi) implementation(Libs.koinAndroid)}动态依赖解析:// 根据构建类型动态切换依赖val isRelease = gradle.startParameter.taskRequests.toString...3 倍扩展能力:支持实现复杂构建逻辑的可能性提升 10 倍"迁移 KTS 后,我们的 CI 构建时间平均缩短 18%,配置相关问题工单减少 90%"\—— 某头部电商 App 技术负责人结语:拥抱构建脚本的新纪元...通过本文的深度实践指南,开发者可以:✅ 建立类型安全的构建屏障\✅ 实现工程配置的智能化管理\✅ 解锁持续交付的终极形态立即行动清单:在 buildSrc 中创建 Dependencies.kt选择最简单的模块开始...KTS 转换配置本文提供的编译加速参数在周会分享 KTS 的收益数据扩展阅读:Gradle Kotlin DSL 官方文档undefinedAndroid 官方构建指南从入门到精通的 KTS 转型指南

    46810

    开源|携程机票 App KMM 跨端 KV 存储库 MMKV-Kotlin

    2.2 初始化 MMKV 在使用前需要进行初始化,由于 MMKV-Android 强依赖于 Context 类型,因此 MMKV-Kotlin 的初始化 API 在两端有所区别,需要在 Android...Gradle 脚本中通过 CocoaPods 依赖 MMKV-iOS,在 iOS source set 中通过其 Objective-C API 完成对 MMKV 的调用。...使用 Gradle 进行发布的常见流程如下: 注册 sonatype JIRA 账号,登录后提交一个 issue 用于注册自己发布时会用到的 group id。...由于 Android 在 Gradle 中本身就有完整的构建发布体系, 所以 Android aar 的发布需要手动配置发布的变体,例如(kts): kotlin {     android {         ...此外,MMKV-Kotlin 也设计了与 MMKV 类似的单元测试,覆盖了绝大部分核心 API,并在 Android 平台上设计了插桩测试用以检测多进程访问的正确性。

    2.3K20

    Android Studio 中的Gradle版本介绍

    前言 如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。...不了解Project目录下build.gradle中的com.android.tools.build:gradle版本与gradle/wrapper/gradle-wrapper.properties...可以方便的帮我们将项目代码进行构建打包,是一个脚本工具。 Gradle官网:gradle.org 如果你想了解更多与gradle的相关资料,可以通过官网进行了解。...Android Gradle 插件 Android Studio 是采用Gradle 进行代码的打包编译以及构建项目的。 但是Gradle是一个开源的自动构建工具,是面向全平台的。...依赖项配置变更 compile 根据用例,该配置已被 api 或 implementation替换。同样适用于 *Compile 变体,例如 debugCompile。

    4.5K30

    Gradle 与 AGP 构建 API: 配置您的构建文件

    Gradle 简介 Gradle 是一个通用的自动化构建工具。当然,您可以使用 Gradle 来构建 Android 项目,但实际上您可以使用 Gradle 来构建任何类型的软件。...在多项目层级结构中,根项目中会包含一个 settings.gradle 文件,其中列出了构建中包含的其他项目。Android 使用多项目构建来帮您模块化应用。...典型的 Android 项目会包含一个顶层 Gradle 构建文件。Android 项目中的每个模块又分别有一个 Gradle 构建文件。在示例项目中,我仅有一个应用模块。...在模块层的 build.gradle 文件中,我需要声明和应用构建项目所需的插件。...如需了解更多有关 gradle 如何使用这些信息来创建变体,以及您可以使用哪些其他选项,请参阅 构建文档: android { compileSdk 31 defaultConfig

    2.2K20

    前端开发者的 Kotlin 之旅:初试Gradle 构建系统

    在学习过程中,我发现 Kotlin 的构建系统 Gradle 与前端常用的构建工具(如 Webpack、Vite 等)有很大的不同。...Kotlin Multiplatform 项目是一个很好的选择,原因如下: 多平台配置需求:需要同时支持如 Linux、iOS、Android 等不同目标平台的构建配置,例如为每个平台指定特定的依赖和编译选项...支持传递依赖自动解析;npm 依赖存储在 node_modules,需手动处理版本冲突 构建脚本 声明式+命令式混合语法 函数式编程风格...例如在 commonMain 中引入 kotlin-stdlib,Gradle 会自动解析其传递依赖并下载到本地仓库。...配置构建脚本 我们在 modules/cli-tool/build.gradle.kts 中配置了构建逻辑: plugins { kotlin("multiplatform") } kotlin

    87110

    Gradle系列-运用篇

    例如默认配置项:defaultConfig;签名相关:signingConfig;构建变体:buildTypes;产品风格:productFlavors;源集配置:sourceSets等。...开发版与正式版请求的数据api可能不同,对于这种情况我们就可以使用productFlavor来构建不同的产品风格,可以看下面的dev与prod配置 1 flavorDimensions "mode...还有可以通过manifestPlaceholders来配置可用于AndroidManifest中的变量,例如根据不同的产品风格显示不同的app名称 dev与prod网络请求时使用不同的api host,...} gradle创建的构建变体数量等于每个风格维度中的风格数量与你配置的构建类型数量的乘积,所以上面例子的构建变体数量为12个。...在gradle为每个构建变体或对应apk命名时,属于较高优先级风格维度的产品风格首先显示,之后是较低优先级维度的产品风格,再之后是构建类型。

    90610

    ​前端开发者的 Kotlin 之旅:理解 Gradle关键文件与目录

    ,但有一个重要区别:Gradle Wrapper 确保了团队中所有人使用完全相同版本的构建工具,这比前端项目中容易出现的"我用的 npm,你用的 yarn"混乱情况要好得多。...配置文件:定义构建过程2.1 build.gradle 或 build.gradle.kts这是 Gradle 项目的核心配置文件,.kts 后缀表示使用 Kotlin DSL 编写。...在 Gradle 7.0+ 中,你可以使用 TOML 文件(类似于更现代的 INI 格式)来声明所有依赖版本:# gradle/libs.versions.toml[versions]kotlin =...+ 声明式混合构建步骤隐式定义在配置中构建步骤显式定义为任务单一入口和输出可以有多个构建产物专注于资源转换和打包全面的项目生命周期管理总结作为前端开发者,掌握 Gradle 在 Kotlin 项目中的应用并不需要从零开始学习...通过将 Gradle 概念映射到你已经熟悉的前端工具上,可以大大缩短学习曲线:思考任务而非配置:在前端中,我们主要通过配置驱动构建;在 Gradle 中,我们明确定义任务和它们之间的依赖关系。

    54800

    Gradle

    以下是其核心特性和应用场景的总结: ️ 一、核心特性 灵活的构建脚本 DSL 支持:使用 Groovy 或 Kotlin 编写构建脚本(文件名为 build.gradle 或 build.gradle.kts...声明式与命令式结合:既可声明项目结构(如依赖关系),也可编写动态任务逻辑(如条件编译)。 高性能构建 增量构建:仅重新处理变更的代码或资源,大幅提升构建速度。...提供细粒度控制:支持依赖范围(如 implementation、testImplementation)、排除冲突依赖等。...三、典型应用场景 Android 开发 Google 官方推荐工具,用于编译 APK、管理依赖、多渠道打包等。...](https://maven.aliyun.com/repository/public)' } } 启用构建缓存:在 gradle.properties 中添加 org.gradle.caching=

    72710

    Gradle 构建脚本

    在 Groovy 构建脚本中(.gradle) 你可以使用任何 Groovy 元素。 在 Kotlin 构建脚本中 (.gradle.kts) 你可以使用任何 Kotlin 元素。...build.gradle & Project API 每个项目都有一个 build.gradle 文件,该文件是该项目的构建入口,可以在这这个文件里对该项目进行配置,比如配置版本,需要哪些插件,依赖哪些库等...也就是说,Script 接口中的所有属性和方法都可以在脚本中使用。 当 Gradle 执行 Kotlin 脚本(.gradle.kts)时,会编译脚本到 KotlinBuildScript的子类中。...任务依赖和任务排序 一个任务可以依赖其他任务或者在其他任务执行后再执行。 Gradle 确保在执行任务时遵守所有任务依赖性和排序规则,以便在所有依赖项和任何 “必须运行” 的任务执行之后再执行任务。...:rxjava:2.1.2' } 在 Android 中依赖的添加放在了各个module 中,按需添加,哪个模块需要在哪个模块的构建脚本里添加。

    1.2K20

    使用新 Android Gradle 插件加速您的应用构建

    非传递性 R 类 启用非传递性 R 类 (non-transitive R-class) 后,您应用中的 R 类将只会包含在子项目中声明的资源,依赖项中的资源会被排除在外。...此时可以使用 Gradle 提供的 project、task 容器、configuration 容器等全局对象来创建包含声明的输入和输出的任务。如上代码中,我们注册了一个任务并进行相应配置。...Android Gradle 插件在 7.0 版本中引入了新的 API,让您可以访问到这些变体对象和一些中间工件。这样一来,开发者就可以在不操作构建任务的前提下改变构建行为。...asset 目录的集合中,并正确连接任务依赖项。...相比仅扩展 DSL,扩展 Variant API 有这样一些优势: DSL 值是固定的,但自定义变体属性可以使用构建任务的输出,Gradle 会自动处理所有构建任务的依赖项。

    3.5K30

    快速迁移 Gradle 脚本至 KTS

    ://github.com/bennyhuo/Android-LuaJavax),在提交记录当中可以看到 release 1.0 和 use kts 这两笔提交,前者使用 Groovy 编写 Gradle...不知道大家是否发现,改造的过程其实就是一个了解过去 Groovy 写法的本意,并在查阅 Gradle 官方 API 的基础上翻译成 Kotlin 调用的过程。...依赖版本号的替代方案 我们在 Groovy 版本的脚本中经常往 ext 当中添加一些值,以便于后续使用,其中最常见的场景就是依赖的管理,特别是版本号。...4.1 Kotlin 风格的属性读写 尽管不能像 Groovy 那样任性,Gradle 也尽可能地为 Kotlin 提供了一些相对易用的 API 供我们使用,除了通过 extra[...]...Gradle 脚本访问到,我们在工程当中创建 buildSrc 目录,并在其中添加 build.gradle.kts: plugins { `kotlin-dsl` } repositories

    3.6K70

    还在用build.gradle吗?试试build.gradle.kts吧

    build.gradle和我们的编译息息相关,而且编译相关的对于一个安卓开发其实还是非常重要,而且也是息息相关的。Groovy的动态化也是有取舍的,下面我略列下我在开发过程中碰到的问题吧。...Gradle Kotlin DSL 1.0 Gradle官方其实在18年底就已经正式发布了kts的第一个版本了。那么话不多,为什么我们不试试呢。...第一个是我截取的kts相关的,第二个则是我以前的一个项目采用的还是build.gradle。从第一眼的影像中,我们可以简单的比对出kts相关的代码提示上真的就会好很多。...,而com.android.library中的则是另外一个实现类LibraryExtension,相对而言他的字段属性就会更少一点,有兴趣的大佬可以自行跟踪翻查源代码。...还有就是相比较而言,因为groovy是一门动态化语言,所以其中的类型判断也更为简单,而且groovy中的MethodMissing这个机制,可以帮助我们动态调用很多隐藏的api。

    5.9K20
    领券