首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

79230

构建配置从 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,如果想要使用全局控制

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

构建配置从 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,如果想要使用全局控制

1.6K20

Gradle Kotlin DSL指南

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

9.9K20

AndroidGradle教程(九)完结篇

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代码。

2.7K20

开源|携程机票 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。...由于 AndroidGradle 本身就有完整的构建发布体系, 所以 Android aar 的发布需要手动配置发布的变体,例如(kts): kotlin {     android {         ...此外,MMKV-Kotlin 也设计了与 MMKV 类似的单元测试,覆盖了绝大部分核心 API并在 Android 平台上设计了插桩测试用以检测多进程访问的正确性。

1.6K20

Android Studio Gradle版本介绍

前言 如果你针对Android StudioGradle插件有不懂。打开老项目的时候,经常由于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。

1.1K30

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

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

1.6K20

Gradle系列-运用篇

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

62710

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 ,按需添加,哪个模块需要在哪个模块的构建脚本里添加。

86120

Android Studio 4.0新特性及升级异常问题的解决方案

Gradle构建优化 当将Android Studio 4.0与Android Gradle插件4.0.0及更高版本一起使用时,“构建速度”窗口可用于帮助您了解和诊断构建过程的问题,例如禁用的优化和配置不正确的任务...Java 8库在D8和R8desugaring 通过一个称为desugaring的过程,您现在可以使用许多Java 8语言API,而无需为您的应用程序设置最低API级别。...Kotlin DSL脚本KTS文件的基本支持 Android Gradle插件4.0.0-alpha01和更高版本现在支持Kotlin DSL构建脚本文件(* .kts)。...Dependencies metadata 使用Android Gradle插件4.0.0及更高版本构建应用时,该插件包含描述已编译到应用依赖的元数据。...上载应用程序时,Play控制台会检查此元数据,以为您提供以下好处: 获取有关应用程序使用的SDK和依赖的已知问题的警报 收到可行的反馈来解决这些问题 以上就是对AS 4.0的一些新特性总结,并在升级过程碰到的几点疑问和解决方案

3.7K21

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

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

2.6K30

还在用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

4.8K20

快速迁移 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.1K70

Android 重构 | 持续优化统一管理 Gradle

发现目录后,Gradle 会自动编译并测试此代码,并将其放入构建脚本的类路径。对于多项目构建,只能有一个 buildSrc 目录,该目录必须位于根项目目录。...buildSrc 使用适用于 Java 和 Groovy 项目的相同源代码约定。它还提供对 Gradle API 的直接访问。...buildSrc 实践 描述下操作步骤: 在项目根目录下创建 buildSrc 目录,随后新建 build.gradle.kts 文件; 创建 src 目录,以及对应管理版本文件; 替换直接使用原有依赖...* 该过程在构建期间将被重用,因此分叉开销很小。分叉的好处是,内存密集型编译是在不同的过程中进行的,从而导致主 Gradle 守护程序的垃圾回收量大大减少。...之前曾经做过一个 basic 抽取,同样将共有参数/信息提取到 basic.gradle ,每个 module apply,这样就是减少不少代码量。

1.8K31

《Kotin 极简教程》第12章 使用 Kotlin 集成Gradle 开发 第12章 使用 Kotlin 集成Gradle 开发《Kotlin极简教程》正式上架:

我们在前面的章节,已经有很多示例项目使用Gradle构建我们的 Kotlin 工程。本章我们将系统地来介绍一下使用 Kotlin 集成Gradle 开发的相关内容。...Android项目 AndroidGradle 模型与普通 Gradle 有点不同,所以如果我们要构建一个用 Kotlin 编写的 Android 项目,我们需要用 kotlin-android...例如我们在项目根路径下面的settings.gradle如下配置: include ':app' 每一个子项目都拥有自己的build.gradle文件来声明自己如何构建。...= 'build.gradle.kts' 指定 gradle 构建文件名是 'build.gradle.kts' 。...在下一章,我们将学习使用 Kotlin 和 Anko 来进行Android开发的相关内容。

2.7K20

Hello World —— 使用 Kotlin 开发跨平台应用

Android/iOS 应用程序的业务逻辑代码使用单一的代码库,仅在需要的时候编写平台特定代码,例如实现原生的 UI,使用平台特定 API 等等。 KMM 可以和你的工程无缝集成。...使用 Gradle 进行构建。 androidApp 模块 —— Android 应用的 Kotlin 模块。使用 Gradle 构建。...实现 iosMain 下存储 iOS 的特定代码,包括 actual 实现 每一个源集都有自己的依赖,Kotlin 标准库依赖会自动添加到所有源集,你不需要在编译脚本声明。...build.gradle.kts 这份 build.gradle.kts 文件包含了 shared 模块对于 Android/iOS 的配置。...首先,在 common 模块中使用 expect 关键字声明一个空的类或函数,就像创建接口或者抽象类一样。然后,在所有的其他模块编写平台特定代码来实现对应的类或函数,并用 actual 修饰。

1.9K20

Android Studio 4.0重磅发布:全新的 Motion 编辑器及众多更新都在这里!

编写 R8 规则时的智能编辑器功能 R8 是在 Android Gradle 插件 3.4.0 引入的,可将 desugaring、缩减、混淆、优化和 dexing 合并为一个步骤,从而显著提高构建性能...使用 Build Analyzer 解决构建性能的瓶颈 Android 开发人员依靠各种 Gradle 插件和自定义构建逻辑来为应用量身定制构建系统。...功能上的依存关系 使用 Android Gradle 插件 4.0.0 及更高版本时,你现在可以指定一个动态功能模块依赖于另一个功能模块。...依赖元数据 使用 Android Gradle 插件 4.0.0 及更高版本构建应用时,插件会包含描述已编译到你应用的库依赖的元数据。...上传应用时,Play 控制台会检查这些元数据,以提供有关应用使用的 SDK 和依赖已知问题的警报,并在某些情况下提供可解决这些问题的可行反馈。

4.6K30

一个gradle构建的java项目

build.gradle.kts 构建过程描述脚本 gradlew 构建脚本 gradlew.bat 构建脚本 settings.gradle.kts 项目名称等配置文件 settings.gradle.kts...文件内容为: rootProject.name = "gradle-example-4" Copy rootProject.name 为构建分配一个名称,这将重写以其所在目录命名构建的默认行为。...useJUnitPlatform() }Copy 其中,java表示java应用插件,group表示组名称,version则表示该项目的版本,mavenCentral()表示中央仓库,dependencies的内容表示项目依赖...; } }Copy 执行项目构建得到jar文件 在idea构建gradle项目,需要关注gradle插件的内容,特别是下图中的红色部分 该配置描述了项目构建gradle版本,默认使用项目...gradle/wrapper目录下的gradle版本,我们在IDEA执行构建操作时则使用此配置。

68320
领券