Android Gradle开发与应用Gradle详细使用

一、Gradle 基础知识

1. Gradle 构建脚本

Gradle 构建脚本通常使用 Groovy 或 Kotlin DSL 编写。Android 项目中有两个主要的 Gradle 构建脚本:

a、项目级构建脚本 (build.gradle 或 build.gradle.kts):位于项目的根目录中,用于配置项目范围内的构建设置和依赖。

b、模块级构建脚本 (build.gradle 或 build.gradle.kts):位于每个模块的目录中,用于配置模块的构建设置和依赖。

2. 基本语法

a、插件:插件扩展了 Gradle 的功能。常见的 Android 插件有 com.android.application 和 com.android.library

b、依赖管理:通过 dependencies 块来声明项目所依赖的库和模块。

c、任务:Gradle 的核心是任务(task),每个任务代表构建过程中的一个可执行单元。

二、Android 项目中的 Gradle 配置

1. 项目级构建脚本
// 项目根目录的 build.gradle 文件
buildscript {ext {// 配置依赖版本号kotlin_version = "1.7.10"}repositories {google()mavenCentral()}dependencies {classpath "com.android.tools.build:gradle:7.2.0"classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"}
}allprojects {repositories {google()mavenCentral()}
}

2. 模块级构建脚本

// 模块目录的 build.gradle 文件
plugins {id 'com.android.application'id 'kotlin-android'
}android {compileSdk 32defaultConfig {applicationId "com.example.myapp"minSdk 21targetSdk 32versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}
}dependencies {implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"implementation 'androidx.core:core-ktx:1.7.0'implementation 'androidx.appcompat:appcompat:1.4.0'implementation 'com.google.android.material:material:1.5.0'testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.3'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

三、Gradle 任务

  • 常用任务
    • assemble:编译项目,不包含测试。
    • assembleDebug:编译 Debug 版本。
    • assembleRelease:编译 Release 版本。
    • clean:删除构建目录。
    • build:编译和测试项目。
    • test:运行测试。

四、Gradle 与多模块项目

多模块项目有助于分离项目逻辑、提高可维护性和复用性。可以创建多个模块,例如 applibraryfeature等。

1. 创建新模块

在 Android Studio 中,通过 File > New > New Module 可以创建一个新的模块。

2. 模块依赖管理

在主模块的 build.gradle 文件中添加对新模块的依赖:

dependencies {implementation project(":library")implementation project(":feature")
}

五、自定义 Gradle 任务

你可以通过创建自定义任务来扩展 Gradle 的功能:

task hello {doLast {println 'Hello, Gradle!'}
}

在终端中运行 ./gradlew hello 即可执行该任务。

六、Gradle 高级功能

1. 配置构建变体

通过 productFlavors 可以定义不同的构建变体:

android {...productFlavors {free {applicationIdSuffix ".free"versionNameSuffix "-free"}paid {applicationIdSuffix ".paid"versionNameSuffix "-paid"}}
}

2. 自定义构建类型

android {...buildTypes {staging {initWith debugmatchingFallbacks = ['release']}}
}

通过上述配置,你可以更灵活地管理和优化你的 Android 项目构建流程。Gradle 提供了强大的功能和灵活性,可以根据具体需求进行定制。

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

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

相关文章

Java | Leetcode Java题解之第214题最短回文串

题目&#xff1a; 题解&#xff1a; class Solution {public String shortestPalindrome(String s) {int n s.length();int[] fail new int[n];Arrays.fill(fail, -1);for (int i 1; i < n; i) {int j fail[i - 1];while (j ! -1 && s.charAt(j 1) ! s.charAt…

ASP.NET Core Blazor 5:Blazor表单和数据

本章将描述 Blazor 为处理 HTML 表单提供的特性&#xff0c;包括对数据验证的支持。 1 准备工作 继续使用上一章项目。   创建 Blazor/Forms 文件夹并添加一个名为 EmptyLayout.razor 的 Razor 组件。本章使用这个组件作为主要的布局。 inherits LayoutComponentBase<div …

【Mojo开发新纪元】探索CSS预处理器的集成之路

标题&#xff1a;【Mojo开发新纪元】探索CSS预处理器的集成之路 Mojolicious是一个基于Perl的现代且高性能的Web开发框架&#xff0c;它提供了一套丰富的工具来简化Web开发过程。随着前端技术的发展&#xff0c;CSS预处理器如Sass和Less因其强大的功能和灵活性&#xff0c;已经…

论文 | PRCA: 通过可插拔奖励驱动的上下文适配器拟合用于检索问答的黑盒大语言模型

论文全称&#xff1a;PRCA: Fitting Black-Box Large Language Models for Retrieval Question Answering via Pluggable Reward-Driven Contextual Adapter 核心问题&#xff1a;如何在检索增强式问答&#xff08;ReQA&#xff09;任务中&#xff0c;利用大型语言模型&#xf…

Java面试题:sql优化

表的设计的优化 参考阿里开发手册(嵩山版) 设置合适数值类型(tinyint,int,bigint) 设置合适的字符串类型(char,varchar) 索引优化 SQL语句优化 需要指明字段名称,避免直接使用select*,导致回表查询 避免造成索引失效的写法 尽量用union all代替union,union会多一次过滤…

【C语言入门】初识C语言:掌握编程的基石

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言入门 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C语言入门 &#x1f4d2;1. 选择…

Mac OS M3 安装 Docker 并解决芯片不支持问题

有点儿无语&#xff0c;好不容易从Docker官网下载 Apple Chip版本&#xff0c;安装挺快&#xff0c;一试废了。docker --version命令执行挺好&#xff0c;但一下载镜像常用的alpine不能运行。 经查询资料尝试选择了替代品 OrbStack目前感觉挺好用。官网&#xff1a;https://or…

在Linux系统中使用阿里云镜像源安装和配置Docker的详细教程

很多国内小伙伴在Linux上安装Docker经常会遇到网络不可达的问题。那么我们可以使用阿里云镜像来完成Docker的安装&#xff0c;这里是如何在 CentOS 上使用阿里云的 Docker 镜像源的步骤&#xff1a; 1. 删除已有的 Docker 仓库 如果之前添加了任何 Docker 仓库&#xff0c;先…

有哪些AI绘画软件?

以下是一些比较知名的AI绘画软件&#xff1a; 1、DeepArt&#xff1a;基于深度学习技术&#xff0c;可以将照片转换成各种艺术风格的绘画。 2、Artbreeder&#xff1a;通过生成对抗网络&#xff08;GAN&#xff09;&#xff0c;允许用户混合和匹配图像以创建新的艺术作品。 …

单片机关键任务优先级的实现学习

与总体产品联调时&#xff0c;需要各个单机系统严格按照总体要求&#xff0c;进行数据输出&#xff0c;时间的偏差将出现系统异常&#xff0c;控制失败等不稳定情况产生&#xff0c;甚至影响到产品安全。 因此必须确保某些关键任务的优先执行。单片机任务优先级一般有两种方式…

[小试牛刀-习题练]《计算机组成原理》之指令系统

一、选择题 0.【指令-课本习题】某计算机按字节编址&#xff0c;指令字长固定且只有两种指令格式&#xff0c;其中三地址指令29条&#xff0c;二地址指令107条&#xff0c;每个地址字段为6位&#xff0c;则指令字长至少应该是&#xff08;A&#xff09; A.24位 B. 26位 C. 28位…

ctfshow web sql注入 web242--web249

web242 into outfile 的使用 SELECT ... INTO OUTFILE file_name[CHARACTER SET charset_name][export_options]export_options:[{FIELDS | COLUMNS}[TERMINATED BY string]//分隔符[[OPTIONALLY] ENCLOSED BY char][ESCAPED BY char]][LINES[STARTING BY string][TERMINATED…

记一次:poi填充Word模板

前言&#xff1a;笔者在实际工作中需要生成一些报告&#xff0c;但报告的模板是固定的&#xff0c;指定位置需要替换数据或图片&#xff0c;因此总结一下 正题&#xff1a;话不多说&#xff0c;直接贴上工具类吧 package com.lhkj.iot.controller.poi;import java.io.File; i…

Unity丧尸围城Demo总结

1.BasePanel和UIManager 子类面板继承BasePanel&#xff0c;UIManager实现动态创建面板&#xff0c;展示面板&#xff0c;隐藏面板&#xff0c;得到面板 &#xff08;1&#xff09;单例类 &#xff08;2&#xff09;canvas设置为预制体&#xff0c;将新创建的面板设置为该子类 …

【面试题】网络IO多路复用模型之异步事件

目录 异步事件模型的概念 工作流程&#xff1a; WSAEventSelect模型的优势和不足 代码&#xff1a; 异步事件模型的概念 WSAEventSelect模型是WindowsSockets提供的另外一个有用的异步I/O模型。该模型允许一个或多个套接字上接收以事件为基础的网络事件通知。Windows Sock…

面试专区|【40道移动端测试高频题整理(附答案背诵版)】

iOS应用和Android应用测试有什么侧重点&#xff1f; iOS应用和Android应用测试的侧重点略有不同&#xff0c;主要表现在以下几个方面&#xff1a; 分辨率和屏幕尺寸&#xff1a;Android设备的分辨率和屏幕尺寸多种多样&#xff0c;因此&#xff0c;需要测试更多的分辨率和屏幕…

2.Mybatics_映射器与参数

文章目录 映射器与参数一.XML映射器1.创建工具类2.SQL语句操作:3.模糊查询4.返回多个聚合函数的结果5.返回分组后的结果 二.不同个数参数的处理1.单个参数2.对象参数3.多个参数4.传入一个map类型的参数5.添加注册方法引出service层概念 映射器与参数 一.XML映射器 1.创建工具…

Android系统层屏蔽弹出停止运行对话框

项目场景&#xff1a; 车载项目&#xff0c;ATC8257-Android9.0系统平台&#xff0c;福田汽车P3系列项目 项目使用高德公版地图前提是无法获得任何高德定制服务&#xff0c;每次刷完机去切换语言系统会弹出"高德地图已停止运行"弹窗&#xff0c;严重影响用户使用体…

【第三版 系统集成项目管理工程师】第6章 数据工程

持续更新。。。。。。。。。。。。。。。 【第三版】第六章 数据工程 6.1数据采集和预处理6.1.1 数据采集 P2346.1.2 数据预处理6.1.3 数据预处理方法1.缺失数据的预处理-P2352.异常数据的预处理-P2363.不一致数据的预处理-P2364.重复数据的预处理-P2365.格式不符数据的预处理…

面经总结dd

java基础: 为什么重写hashcode和equals? hash码由对象的内存地址或者对象的属性计算而出,可以作为键值对的键例如hashmap中的key通过hashcode高低位异或计算比如在hashmap中,hashcode是确定桶的位置,然后通过equals()方法找到正确的对象,即认为不同的对象有着相同的桶(…