分享好友 最新动态首页 最新动态分类 切换频道
Android Gradle 插件 4.0.0(2020 年 4 月)
2024-12-26 21:26

此版本的 Android 插件需要使用以下工具:

  • Gradle 6.1.1。 如需了解详情,请阅读有关更新 Gradle 的部分。

  • SDK Build Tools 29.0.2 或更高版本。

此版本的 Android Gradle 插件包含以下新功能。

如需了解详情,请参阅发现构建速度减慢的问题。

Android Gradle 插件现在支持使用多种 Java 8 语言 API,而无需为应用设置最低 API 级别。

通过一个称为“脱糖”的过程,Android Studio 3.0 及更高版本中的 DEX 编译器 D8 已经为 Java 8 语言功能(如 lambda 表达式、默认接口方法、try-with-resources 等等)提供了大量的支持。在 Android Studio 4.0 中,脱糖引擎经过扩展,能够使 Java 语言 API 脱糖。这意味着,您现在可以在支持旧版 Android 的应用中添加过去仅在最新 Android 版本中可用的标准语言 API(如 )。

此版本支持下面一组 API:

  • 顺序流 ()
  • 的子集
  • 的最近新增内容
  • 可选内容(、 和 )以及对上述 API 很有用的一些其他新类
  • 的一些新增内容(、 和 的新方法)
  • (包含 Android 5.0 的 bug 修复)

为了支持这些语言 API,D8 编译了一个单独的 DEX 文件(其中包含缺失 API 的实现),并将其添加到您的应用中。脱糖过程会重新编写应用的代码,以便在运行时改用此库。

如需启用对这些语言 API 的支持,请在应用模块的 文件中添加以下代码:

请注意,在以下情况下,您可能还需要在相应库模块的 文件中添加以上代码段:

  • 库模块的插桩测试会使用这些语言 API(直接使用,或者通过库模块或其依赖项使用)。这是为了向您的插桩测试 APK 提供缺失的 API。

  • 您想单独在该库模块上运行 lint。这是为了帮助 lint 识别这些语言 API 的有效使用情况,并避免报告虚假警告。

Android Gradle 插件 4.0.0 引入了一种新方法来控制您要启用和停用哪些构建功能,如视图绑定和数据绑定。添加新功能后,默认情况下,这些功能处于停用状态。您随后可以使用 代码块来仅启用所需的功能,它可以帮助您优化项目的构建性能。您可以在模块级 文件中为每个模块设置相应的选项,如下所示:

您还可以为项目中的所有模块指定这些功能的默认设置,方法是在项目的 文件中添加下面的一项或多项,如下所示。请注意,您仍然可以使用模块级 文件中的 代码块替换这些项目范围的默认设置。

此外,您还应在 Android Studio 中启用功能对功能的依赖性功能(例如,为了在修改运行配置时支持该功能),方法是从菜单栏中依次点击 Help > Edit Custom VM Options,并添加以下代码:

使用 Android Gradle 插件 4.0.0 及更高版本构建应用时,该插件包含描述已编译到应用中的依赖项的元数据。上传应用时,Play 管理中心会检查此元数据,以便为您提供以下优势:

  • 获取有关您的应用使用的 SDK 和依赖项的已知问题的提醒
  • 接收切实可行的反馈来解决这些问题

数据经过压缩,并由 Google Play 签名密钥加密,然后存储在您的发布应用的签名分块中。但是,您可以在以下目录中的本地中间 build 文件中自行检查元数据:。

如果您不希望分享这些信息,可以通过在模块的 文件中添加以下代码来选择退出:

您现在可以从应用的 AAR 依赖项导入 C/C++ 库。当您按照下述配置步骤操作时,Gradle 会自动使这些原生库可供您的外部原生构建系统(如 CMake)使用。请注意,Gradle 仅向您的 build 提供这些库;您仍然必须配置构建脚本才能使用它们。

系统会以 软件包格式将库导出。

每个依赖项最多可公开一个包含一个或多个模块的 Prefab 软件包。Prefab 模块是一个库,它可以是共享库或静态库,也可以是仅包含头文件的库。

通常,软件包名称与 Maven 工件名称匹配,模块名称与库名称匹配,但并不总是如此。由于您需要知道库的软件包和模块名称,因此您可能需要参考依赖项文档以确定这些名称。

配置外部原生构建系统

如需查看您需要遵循的步骤,请针对您计划使用的外部原生构建系统执行以下步骤。

应用的每个包含原生代码的 AAR 依赖项都会公开您需要导入 ndk-build 项目的 文件。您可以使用 命令导入此文件,该命令会搜索您在 ndk-build 项目中使用 属性指定的路径。例如,如果您的应用定义了 并且使用了 curl,您应在 Android.mk 文件中添加以下代码:

  1. 对于 CMake:

  2. 对于 :

AAR 中包含的原生依赖项通过 CMAKE_FIND_ROOT_PATH{: .external} 变量向您的 CMake 项目公开。当系统调用 CMake 时,Gradle 会自动设置此值,因此如果您的构建系统修改了此变量,请务必对其附加相应值而不是直接赋值。

每个依赖项都会向您的 CMake build 公开 config-file 软件包{: .external},您可以使用 {: .external} 命令将其导入。此命令会搜索与给定软件包名称和版本匹配的 config-file 软件包,并公开它定义的要在您的 build 中使用的目标。例如,如果您的应用定义了 并且使用了 curl,您应在 文件中添加以下代码:

您现在可以在 中指定 。当您构建项目时,您的外部原生构建系统会自动关联 与 并将 打包在 APK 或 app bundle 中。如需了解详情,请参阅 curl prefab 示例{:.external}。

使用此版本的插件时,您可能会遇到以下行为方面的变更。

块中应用签名配置的行为变更如下:

v1 签名

  • 如果 已显式启用,AGP 会执行 v1 应用签名。
  • 如果用户显式停用了 ,v1 应用签名便不会执行。
  • 如果用户未显式启用 v1 签名,系统可能会根据 和 自动停用 v1 签名。

v2 签名

  • 如果 已显式启用,AGP 会执行 v2 应用签名。
  • 如果用户显式停用了 ,v2 应用签名便不会执行。
  • 如果用户未显式启用 v2 签名,系统可能会根据 自动停用 v2 签名。

这些变更可让 AGP 根据用户是否已显式启用这些标志来停用相应签名机制,从而优化 build。在此版本之前,即使 已获显式启用,也可能会被停用,这会使用户感到迷惑。

Android Gradle 插件 3.6.0 废弃了功能插件 () 和免安装应用插件 (),改为使用动态功能插件 (),以通过 Android App Bundle 构建和打包免安装应用。

在 Android Gradle 插件 4.0.0 及更高版本中,完全移除了这些已废弃的插件。因此,如需使用最新的 Android Gradle 插件,您需要迁移免安装应用以支持 Android App Bundle。通过迁移免安装应用,您可以利用 App Bundle 的优势,并简化应用的模块化设计。

移除了将注解处理分离到一项专门任务中的功能。此选项过去用于在纯 Java 项目中使用非增量注解处理器时维持增量 Java 编译;过去的启用方法是在 文件中将 设为 ,但这种方法不再起作用。

您应改为使用增量注解处理器来提升构建性能。

Android Gradle 插件不再检查或添加您在编译类路径上声明的注解处理器,并且 DSL 属性不再有任何作用。如果您在编译类路径上添加注解处理器,可能会遇到以下错误:

如需解决此问题,您必须在 文件中使用 依赖项配置添加注解处理器。如需了解详情,请参阅添加注解处理器。

早期版本的 Android Gradle 插件要求您使用 明确打包您的 CMake 外部原生 build 使用的所有预构建库。您的库可能位于模块的 目录中,也可能位于在 文件中配置的某个其他目录中:

有了 Android Gradle 插件 4.0,上述配置不再是必需的,并且会导致构建失败:

外部原生 build 现在会自动打包这些库,因此使用 明确打包库会导致重复。为了避免构建错误,请将预构建库移至 之外的位置,或从 文件中移除 配置。

本部分介绍 Android Gradle 插件 4.0.0 中存在的已知问题。

Android Gradle 插件 4.0 中的变更会在采用 配置运行的 Gradle 和 Gradle 6.3 或更低版本中触发一种竞态条件,导致 build 在完成后挂起。

此问题将在 Gradle 6.4 中修复。

最新文章
运筹优化算法常用求解器
运筹学从形成到发展,在此过程中积累的大量理论和方法在国防、能源、制造、交通、金融、通信等各个领域发挥着越来越重要的作用。我们在生产生活中遇到的很多实际问题,都可以通过运筹学所涉及的优化方法对其进行数学建模࿰
猫眼智能锁24小时售后服务热线-官方400热线报修中心 - 农业 - 百科知识-蓝心网
猫眼智能锁售后24小时维修服务热线:400-658-8618。猫眼智能锁全市各区售后服务点热线号码。☎:400-658-8618猫眼智能锁售后服务,秉承“诚信为本、客户至上”的服务态度和“以客户为中心”的服务指导思想,不仅真诚地为用户提供先进、高质
wordpress插件开发_使用免费WordPress插件的开发人员指南
wordpress插件开发WordPress, the most popular content management system in the world, is built on a structure that allows users to supplement core functionality with themes that provide visual designs and plugins that provi
全方位SEO优化攻略,助力网站流量激增与品牌影响力提升
SEO优化推广是一种提升网站流量与品牌影响力的全方位策略。通过优化网站结构、内容质量、关键词布局等技术手段,提高网站在搜索引擎中的排名,吸引更多潜在客户,增强品牌知名度和竞争力。在互联网时代,搜索引擎优化(SEO)已经成为企业网
十大免费的手机天气应用排行榜,哪款才是你的首选?
下面给大家推荐几款好用的免费的天气预报软件,有需要的小伙伴们来了解一下。墨迹天气电脑版是一款功能强大的天气预报软件,支持未来五天的天气情况预报和三千余个县级城市的实时数据。除了基本的温度、湿度等信息外,还提供穿衣、运动、化
谷歌语法搜索中如何限定搜索结果的时间范围?如何搜索特定网站上的内容?
  在谷歌搜索中,利用高级搜索技巧可以更加精准地定位到我们需要的信息,这无疑提高了我们的工作效率和搜索体验。chinayandex.cn将详细介绍如何在谷歌搜索中限定搜索结果的时间范围以及如何搜索特定网站上的内容。  一、限定搜索结果的
畅享免费漫漫漫画在线阅读,拥有无尽精彩尽在掌握中
漫蛙2[台版]是目前热门的漫画阅读平台之一,用户可以通过其官方入口轻松访问海量漫画资源。其界面设计简洁明了,方便用户快速找到自己心仪的漫画作品。漫天星漫画app为广大漫画爱好者提供了免费下载的机会。用户只需在应用商店中搜索即可找
天翼云2024年办公终端安全软件授权采购项目询比公告
天翼云2024年办公终端安全软件授权采购项目询比公告本询比项目为天翼云2024年办公终端安全软件授权采购项目(项目编号:09-02-04D-2024-D-A29461,采购人为天翼云科技有限公司,采购代理机构为公诚管理咨询有限公司。项目资金由采购人自筹,
天猫虚拟网店怎么开?网络虚拟店铺开通流程?
开设天猫虚拟网店,对于希望在网络虚拟产品市场中分一杯羹的商家来说,是一个不错的选择。虚拟产品无需仓储与物流压力,适合进行店铺矩阵运营,能够在天猫上获取更多流量和展示,增加销量,形成爆品。那么,天猫虚拟网店怎么开?网络虚拟店
谷歌浏览器(Google)app下载 15.35.40.28.arm64
  【软件介绍】  谷歌浏览器(Google)app(易速软件园提供下载)是一款能轻松的开启随时进行网页浏览的软件。谷歌浏览器(Google)app用户可以利用谷歌帐号对浏览器的设置、书签、密码等数据进行同步,让你在不同的设备上使用浏览器也
相关文章
推荐文章
发表评论
0评