1.4 配置 Android 构建系统

  Android 构建系统会编译应用资源和源代码,然后将它们打包成 APK 或 Android App Bundle 文件,供您测试、部署、签名和分发。

  创建自定义 build 配置需要您对一个或多个 build 配置文件做出更改。这些纯文本文件使用领域特定语言 (DSL) 通过 Kotlin 脚本(Kotlin 语言的一种变种)来描述和操控构建逻辑。您还可以使用 Groovy(一种适用于 Java 虚拟机 [JVM] 的动态语言)来配置 build。包括以下配置文件。

  您无需了解 Kotlin 脚本或 Groovy 便可开始配置 build,因为 Android Gradle 插件引入了您需要的大多数 DSL 元素。Kotlin 脚本还依赖于底层 Gradle Kotlin DSL。开始新项目时,Android Studio 会自动为您创建其中一些文件,并根据合理的默认值进行填充。

1 Gradle 封装容器文件

  Gradle 封装容器 (gradlew) 是源代码中包含的一个小型应用,用于下载和启动 Gradle 本身。这样可以实现更一致的 build 执行。开发者下载应用源代码并运行gradlew。这会下载所需的 Gradle 发行版,并启动 Gradle 来构建应用。

  gradle/wrapper/gradle-wrapper.properties文件包含一个distributionUrl属性,该属性描述了运行 build 时使用哪个版本的 Gradle。

提示:如果同时处理多个项目,请尽可能确保所有项目都使用相同的 Gradle 版本。否则,Gradle 会为每个 Gradle 版本创建 Gradle 守护程序的副本,此外还会为用于运行 Gradle 的每个 JDK创建单独的副本。这会增加内存和 CPU 用量,可能会减慢 build 速度或影响机器上的其他工作。

2 Gradle 设置文件

  settings.gradle(.kts)文件位于项目的根目录下。此设置文件用于定义项目级代码库设置,并告知 Gradle 在构建应用时应将哪些模块包含在内。多模块项目需要指定应包含在最终 build 中的每个模块。

3 顶层 build 文件

  顶层build.gradle(.kts)文件位于项目的根目录下。它通常用于定义项目中模块使用的常见插件版本。

3.1 模块级 build 文件

  模块级build.gradle(.kts)位于每个project/module/目录中。用于为其所在的特定模块配置 build 设置。您可以通过配置这些 build 设置提供自定义打包选项(如额外的 build 类型和产品变种),以及替换main/应用清单或顶级 build 脚本中的设置。

3.2 Android SDK 设置

  应用的模块级 build 文件包含一些设置,这些设置会指明在编译、选择平台行为以及指定运行应用的最低版本时使用的 Android SDK 版本。

在这里插入图片描述
图 1.build 中的 Android SDK

3.3 compileSdk

  compileSdk决定在编译源代码时可用的 Android API 和 Java API。如需使用最新的 Android 功能,请在编译时使用最新的 Android SDK。

  某些 Android 平台 API 在旧版 API 级别中可能不可用。您可以有条件地控制使用新功能,也可以使用 AndroidX 兼容库在较低 Android API 级别下使用新功能。

  每个 Android SDK 都提供了一部分 Java API,供您在应用中使用。 我可以在 Java 或 Kotlin 源代码中使用哪些 Java API 部分中的表格显示了根据 Android SDK 版本可用的 Java API 级别。 早期版本的 Android 系统通过脱糖支持较新的 Java API,您必须在 build 中启用脱糖。

  如果您的compileSdk与当前版本的 Android Studio、AGP 或项目的库依赖项要求冲突,Android Studio 会显示警告。

3.4 minSdk

  minSdk用于指定您希望应用支持的最低 Android 版本。设置minSdk可限制哪些设备可以安装您的应用。

  如需支持较低版本的 Android,您可能需要在代码中添加更多条件检查,或更多地使用 AndroidX 兼容性库。您应将支持较低版本的维护费用与仍在使用这些较低版本的用户百分比进行权衡。如需了解当前的版本使用百分比,请参阅 Android Studio 的新建项目向导中的版本图表。

  在 Android Studio 中修改代码或在构建期间运行检查时,lint 会针对您使用的 API 但minSdk中未提供的 API 发出警告。您应通过将较新功能设为基于条件的或使用 Appcompat 实现向后兼容性来解决这些问题。

3.5 targetSdk

  targetSdk有以下两种用途:

  1. 它用于设置应用的运行时行为。
  2. 它用于证明您已针对哪个 Android 版本进行了测试。

如果您的应用在使用高于targetSdk的 Android 版本的设备上运行,Android 会在兼容模式下运行您的应用,该模式的行为与 targetSdk 中所指示的较低版本类似。例如,当 API 23 引入运行时权限模型时,并非所有应用都已准备好立即采用该模型。 通过将 targetSdk 设置为 22,这些应用可以在不使用运行时权限的情况下在 API 级别为 23 的设备上运行,并且可以使用最新 compileSdk 版本中包含的功能。Google Play 分发政策会强制执行针对目标 API 级别的其他政策。

  targetSdk的值必须小于或等于 compileSdk 的值。

注意:compileSdk 和 targetSdk 的值不必相同。请谨记以下基本原则:

  • 通过 compileSdk,您可以使用新的 API
  • targetSdk 用于设置应用的运行时行为
  • targetSdk 必须小于或等于 compileSdk

4 Gradle 属性文件

  Gradle 还包含两个属性文件,它们位于项目的根目录下,可用于指定 Gradle 构建工具包本身的设置:

4.1 gradle.properties

  您可以在其中配置项目全局 Gradle 设置,如 Gradle 守护程序的最大堆大小。

4.2 local.properties

  为构建系统配置本地环境属性,其中包括:

  • ndk.dir - NDK 的路径。此属性已被废弃。NDK 的所有下载版本都会安装在 Android SDK 目录下的 ndk 目录中。
  • sdk.dir - Android SDK 的路径。
  • cmake.dir - CMake 的路径。
  • ndk.symlinkdir - 在 Android Studio 3.5 及更高版本中,创建指向 NDK 的符号链接,该符号链接的路径可比 NDK 安装路径短。

注意:local.properties 文件专用于 Android Gradle 插件专用的属性。在此文件中添加您自己的值可能会导致出现问题。如果您需要定义自己的本地属性,请创建一个单独的属性文件并手动加载该文件。

5 将项目与 Gradle 文件同步

  当您在项目中对 build 配置文件进行更改时,Android Studio 会要求您同步项目文件,以便它导入 build 配置更改并执行一些检查以确保您的配置不会造成 build 错误。

  如要同步项目文件,请点击做出更改后显示的通知栏中的Sync Now,或者点击菜单栏中的 Sync Project 图标 。如果 Android Studio 发现您的配置存在任何错误(例如,您的源代码使用了只有在 compileSdkVersion 以上的 API 级别中才会提供的 API 功能),Messages 窗口会显示相应问题。

6 源代码集

  Android Studio 按逻辑关系将每个模块的源代码和资源分组为源代码集。当您创建新模块时,Android Studio 会在该模块内创建一个 main/ 源代码集。模块的 main/ 源代码集包含其所有 build 变体使用的代码和资源。

  其他源代码集目录是可选的,在您配置新的 build 变体时,Android Studio 不会自动为您创建这些目录。不过,创建类似于 main/ 的源代码集有助于组织 Gradle 仅在构建特定应用版本时才应使用的文件和资源:

  • src/main/:此源代码集包含所有 build 变体共用的代码和资源。
  • src/buildType/:创建此源代码集可加入特定 build 类型专用的代码和资源。
  • src/productFlavor/:创建此源代码集可加入特定产品变种专用的代码和资源。

注意:如果配置 build 以组合多个产品变种,则可以为变种维度之间的每个产品变种组合创建源代码集目录:src/productFlavor1ProductFlavor2/

  • src/productFlavorBuildType/:创建此源代码集可加入特定 build 变体专用的代码和资源。

例如,如需生成应用的“fullDebug”版本,构建系统需要合并来自以下源代码集的代码、设置和资源:

  • src/fullDebug/(build 变体源代码集)
  • src/debug/(build 类型源代码集)
  • src/full/(产品变种源代码集)
  • src/main/(主源代码集)

注意:当您在 Android Studio 中使用 File > New 菜单选项新建文件或目录时,可以针对特定源代码集进行创建。可供您选择的源代码集取决于您的 build 配置,如果所需的目录尚不存在,Android Studio 会自动创建。

如果不同源代码集包含同一文件的不同版本,Gradle 将按以下优先顺序决定使用哪一个文件。左侧源代码集替换右侧源代码集的文件和设置:

build 变体 > build 类型 > 产品变种 > 主源代码集 > 库依赖项

这样一来,Gradle 便可使用专用于您试图构建的 build 变体的文件,同时重用与其他应用版本共用的 activity、应用逻辑和资源。

在合并多个清单时,Gradle 会使用相同的优先顺序,这样每个 build 变体都能在最终清单中定义不同的组件或权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/468915.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

containerd配置私有仓库registry

机器ip端口regtisry192.168.0.725000k8s-*-------k8s集群 1、镜像上传 rootadmin:~# docker push 192.168.0.72:5000/nginx:1.26.1-alpine The push refers to repository [192.168.0.72:5000/nginx] 6961f0b8531c: Pushed 3112cd521249: Pushed d3f50ce9b5b5: Pushed 9efaf2eb…

ABAP:SET CURSOR FIELD设置鼠标焦点

SET CURSOR FIELD <字段名>&#xff1a;设置鼠标焦点到该字段 SET CURSOR 设置到鼠标焦点列还是行 SET CURSOR LINE 设置鼠标焦点到行 GET CURSOR field <字段名> &#xff1a;这个相对应的获取鼠标焦点得到的字段

PHP和Python脚本的性能监测方案

目录 1. 说明 2. PHP脚本性能监测方案 2.1 安装xdebug 2.2 配置xdebug.ini 2.3 命令行与VS Code中使用 - 命令行 - VS Code 2.4 QCacheGrind 浏览 3. Python脚本性能监测方案 3.1 命令行 4. 工具 5.参考 1. 说明 获取我们的脚本程序运行时的指标&#xff0c;对分析…

VS code 远程连接到docker容器

1.需要在vscode中下载remote 、docker、dev container插件。 如下图&#xff1a; 有小鲸鱼标志&#xff0c;说明已经成功。 右键可以运行或者停止容器运行

阿里1688 阿里滑块 231滑块 x5sec分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

Spring Validation数据校检

文章目录 Spring Validation1 关于Spring Validation2 使用流程3 快速入门4 运行异常处理4.1 说明4.2 处理异常4.3 明确提示消息 5 常用注解5.1 NotNull注解5.2 NotEmpty 注解5.3 NotBlank 注解5.4 Size 注解5.5 Range 注解 6 非POJO参数校验6.1 使用流程6.2 使用示例 Spring V…

‌STAR法则

一&#xff1a;STAR法则 STAR法则是一种简单而实用的表现技巧&#xff0c;常被用于求职过程中的个人经历描述&#xff0c;富有条理性&#xff0c;可以帮助你在职场中脱颖而出。“STAR”分别对应的是situation-task-action-result&#xff0c;通过情境、目标、行动和结果四个方面…

uniapp—android原生插件开发(1环境准备)

本篇文章从实战角度出发&#xff0c;将UniApp集成新大陆PDA设备RFID的全过程分为四部曲&#xff0c;涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程&#xff0c;轻松应对安卓原生插件开发与打包需求&#xff01; 项目背景&#xff1a; UniApp集成新大陆P…

国标GB28181设备管理软件EasyGBS国标GB28181视频平台:GB/T28181中的流类型

在当今的视频监控领域&#xff0c;GB/T28181协议作为中国国家标准委员会发布的重要技术规范&#xff0c;发挥着举足轻重的作用。这一标准不仅为视频监控系统的设备接入、视频流传输、设备控制等功能提供了明确的技术指导&#xff0c;还极大地促进了不同厂家设备之间的兼容性和互…

使用pip安装项目时,遇到以下错误的解决方案:error: [Errno 13] Permission denied

我是在虚拟环境下出现了这个错误 出现这种情况大概率是conda环境没有下载用户路径下的python解释器&#xff0c;你可以使用下面命令来检查 which python3这里如果出现的路径不是你用户目录下的&#xff0c;就是这个原因&#xff0c;你的conda环境在用户目录下&#xff0c;但是…

无人车之定位技术篇

无人车的定位技术是指确定无人车在世界坐标系&#xff08;一般指二维环境&#xff09;中的位置及其本身的姿态的技术。随着技术的不断发展&#xff0c;无人车的定位技术已经实现了多种方法的融合与创新。 一、主要定位技术 GPS定位 原理&#xff1a;基于全球定位系统&#x…

微观经济学速成笔记

需求的收入弹性 需求的收入弹性表示在一定的时期内消费者对某种商品的需求量的变动对于消费者收入量变动的反应程度,供给的收入弹性公式为: 永非证可eM或w-此公-可 根据商品的需求和收入弹性公式&#xff0c;可以将商品分类: em < 0的商品为劣等品(也称低档品)&#xff0c;因…

泷羽sec学习打卡-Windows基础命令2总结篇

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于windows的那些事儿-Base2 一、Windows-Base2常见的协议和端口常用的cmd命令渗透写入文件的思路&…

面经—科大讯飞

1extern c 修饰才能使用c在c中 new delete 可以自动判断分配多少空间 形成多态的两个条件&#xff0c;1.继承关系

软考教材重点内容 信息安全工程师 第1章 网络信息安全概述

第 1 章 网络信息安全概述 1.1.1 网络信息安全相关概念 狭义上的网络信息安全特指网络信息系统的各组成要素符合安全属性的要求&#xff0c;即机密性、完整性、可用性、抗抵赖性、可控性。 广义上的网络信息安全是涉及国家安全、城市安全、经济安全、社会安全、生产安全、人身安…

【51单片机】I2C总线详解 + AT24C02

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 AT24C02介绍存储器 I2C总线介绍I2C时序结构数据帧AT24C02数据帧 编程实例 —— 按键控制数据大小&存储器写入读出 AT24C02介绍 …

全球海工供应链,中国建造!第十一届全球FPSOFLNGFSRU大会在上海隆重召开

10月30日-31日&#xff0c;全球海洋工程与高端装备领域的年度国际交流盛会——第十一届全球FPSO&FLNG&FSRU大会暨海上能源全产业链博览会在上海隆重召开&#xff0c;同期举办第七届亚洲海洋风能大会。本次大会暨博览会由上海船舶工业行业协会、上海市工业合作协会、决策…

Linux网络编程——网络字节序和IP地址详解

一、网络字节序 1、大端模式和小端模式 字节序是指多字节数据的存储顺序&#xff0c;在设计计算机系统的时候&#xff0c;有两种处理内存中数据的方法&#xff1a;大端格式、小端格式。 小端格式(Little-Endian)&#xff1a;将低位字节数据存储在低地址&#xff1b; 大端格式(…

解析低代码开发在企业数字化转型中的多重优势

在数字化转型的浪潮中&#xff0c;企业面临着前所未有的机遇和挑战。为了在竞争激烈的市场中脱颖而出&#xff0c;企业需要迅速且高效地构建和更新应用程序&#xff0c;以适应不断变化的业务需求。数字化转型已不再是企业的选择&#xff0c;而是关乎生存和发展的必由之路。在这…

JMeter项目实战

目录 一、流程&#xff1a; 1.接口测试流程&#xff1a; 2.测试数据准备&#xff1a; 3.接口功能测试&#xff1a; 4.自动化测试流程&#xff1a; 5.情景压力测试分析&#xff1a; 6.生成图形化测试报告&#xff1a; 一、流程&#xff1a; 1.接口测试流程&#xff1a; …