Android 详解 build.gradle 文件

Android Gradle学习(二)- build.gradle结构 看下编译生成的BuildConfig.java,可以通过匹配渠道做不同的操作,比如初始化不一样的推送(小米或华为),显示收费或者免费等等。另外,也可以手动配置资源路径,例如在项目根目录创建common/main,sourceSets可以配置此目录。还可以根据不同渠道引入不同依赖sdk。有一种场景,maven依赖和aar依赖同时包含了同一个库,编译时就会冲突,处理方式有两种。,这样在打包的时候就可以自动选择不同环境url,不需要手动去修改代码或配置切换。渠道和buildType可以分别配置不同的资源,例如。 阅读详情

       不同于 Eclispse,Android Studio 是采用 Gradle 来构建项目的,Gradle 是一个非常先进强大的项目构建工具,它使用了一种基于 Groovy 领域的特定语言(DSL)来声明项目设置,摒弃了基于 XML(如 Ant 和 Maven)的各种繁琐的配置,今天我们就来一起探讨 Android Studio 中强大的项目构建工具 Gradle


一、简介


       一般来说一个新创建的项目中,有两个 build.gradle 文件,一个是工程目录下的,一个是 app 目录下的,这两个 build.gradle 文件对 Android Studio 项目的作用是非常重要的,接下来我们就新建一个项目来进行详细的分析,这里大家可以随便自己新建一个项目




1)工程目录下的 build.gradle 文件


buildscript {
    repositories {
        //代码托管仓库
        jcenter()
    }
    dependencies {
        //Gradle 插件及使用版本
        classpath 'com.android.tools.build:gradle:2.3.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        //代码托管仓库
        jcenter()
    }
}
// 运行gradle clean时,执行此处定义的task。
// 该任务继承自Delete,删除根目录中的build目录。
// 相当于执行Delete.delete(rootProject.buildDir)
task clean(type: Delete) {
    delete rootProject.buildDir
}

       这些代码都是自动生成的,这里我们先忽略语法层面的东西,只看关键的部分,首先两处 repositories 的闭包中都生明了 jcenter() 这个配置,其实它是一个代码托管仓库,很多开源的 Android 项目都会选择将代码托管到到 jcenter() 上,声明了这个配置,我们就可以轻松的引用 jcenter() 上任何的开源项目了,接下来,dependencies 闭包中使用 classpath 声明了一个 Gradle 插件,这是因为 Gradle 并不是专门为构建 Android 项目而开发的,Java、C++ 等很多项目都可以使用 Gradle 来构建,因此我们如果想要使用它来构建 Android 项目必须声明 com.anddroid.tools.build:gradle:2.3.0 这个插件,其中最后的数字部分是 Gradle 插件的版本号,到这里我们工程目录下的 build.gradle 就分析完了,通常情况下,这个文件中的内容不需要修改,但是当我们模块化开发的时候,也可以在这里配置全局项目的构建相关的配置


2)app 目录下的 build.gradle 文件


//表明是应用程序的插件
apply plugin: 'com.android.application'

//Android 闭包
android {
    //指定项目的编译版本
    compileSdkVersion 25
    //指定项目的构建工具版本
    buildToolsVersion "25.0.3"
    defaultConfig {
        //指定项目的包名
        applicationId "com.example.qiudengjiao.contentprovider"
        //指定项目最低兼容的 Android 版本
        minSdkVersion 15
        //指定项目的最高兼容 Android 版本
        targetSdkVersion 25
        //指定项目的版本号
        versionCode 1
        //指定项目的版本名
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            //指定是否对项目的代码进行混淆(true:混淆 false:不混淆)
            minifyEnabled false
            //proguardFiles用于指定混淆时使用的规则文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

       app 目录下的 build.gradle 文件中的内容相对工程目录下的 build.gradle 文件复杂了很多,不过不要紧,我们一起来看一下,首先第一行应用了一个插件,这里一般有两种值可选

  • com.android.application: 表示是一个应用程序模块
  • com.android.library: 表示是一个库模块
应用程序模块和库模块最大的区别在于一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块来运行

       接下来是一个 android 闭包,在这个闭包中我们就可以配置项目构建的各种属性了,其中 compileSdkVersion 用于指定项目的编译版本,buildToolsVersion 用于指定项目构建工具的版本,目前最新的版本就是 25.0.3,如果有更新的,Android Studio 会提醒

       然后接下来我们看到在 android 闭包中有嵌套了一个 defaultConfig 闭包,defaultConfig 闭包中可以对项目的更多细节进行配置,其中,applicationId 用于指定项目的包名,其实我们在项目创建的时候已经进行过指定,如果想后来进行修改,就可以在这里进行修改,minSdkVersion 用于指定项目的最低兼容 Android 系统版本,这里指定的是 15 表示最低兼容到 Android 4.0 系统,targetSdkVersion 指定的值表示你在该目标版本上已经做过充分的测试,系统将会为你的应用程序启用最新的功能和特性,例如 android 6.0 系统中引入了运行时权限这个功能,如果你将 targetSdkVersion 指定成 23 或更高,那么系统就会为你的程序启用运行时权限功能,而如果你将 targetSdkVersion 指定成 22,那么就说明你的程序最高只能在 Android 5.1 系统上做过充分的测试,Android 6.0 系统中引入的新功能自然就不会启用了,剩下的两个属性 versionCode 用于指定项目的版本号,versionName 用于指定项目的版本名这两个属性在生成安装文件的时候特别重要

       分析完 defaultConfig 闭包,我们接着来分析 buildTypes 闭包,buildTypes 闭包中用于指定生成安装文件的相关配置,通常会有两个子闭包,一个是 debug,一个是 release,debug 闭包用于指定生成测试版安装文件的配置,release 闭包用于指定生成正式版安装文件的配置,另外 debug 闭包是可以忽略不写的,因此我们看到上面的代码中就只有一个 release 闭包,下面我们来看一下 release 闭包中的内容,minifyEnabled 用于指定是否对项目的代码进行混淆,true 表示混淆,false 表示不混淆,proguardFiles 用于指定混淆时使用的规则文件,这里可以指定两个文件,第一个 proguard-android.txt 是在 Android SDK 目录下的,里面是所有项目通用的混淆规则,第二个 proguard-rules.pro 是当前项目的根目录下的,里面可以编写当前项目特有的混淆规则,需要注意的是,通过 Android Studio 直接运行的项目生成的都是测试版安装文件,正式版的我们也会在后面的文章中进行学习

       这样整个 android 闭包中的内容我们就分析完了,接下来还有一个 dependencies 闭包,这个闭包的功能非常强大,它主要是用来指定当前项目所有的依赖关系,通常 Android Studio 项目一共有 3 种依赖方式,本地依赖,库依赖和远程依赖,本地依赖可以对本地的 Jar 包或目录添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖则可以对 jcenter 库上的开源项目添加依赖关系,compile fileTree 就是一个本地依赖声明,它表示将 libs 目录下所有 .jar 后缀的文件都添加项目的构建路径中,而 com.android.support:appcompat-v7:25.3.1 就是一个标准的远程依赖库格式,其中 com.android.support 是域名部分,用于和其他公司的库做区分,appcompat-v7 是组名称,用于和同一个公司中不同的库做区分,25.3.1 是版本号,用于和同一个库的不同版本做区分,加上这句声明后,Gradle 在构建项目时会首先检查一下本地是否已经有这个库的缓存,如果没有的话则会去自动联网下载,然后再添加到项目的构建路径中,至于库依赖声明,它的基本格式是 compile project 后面加上要依赖的库名称,比如一个模块的名字叫 helper,那么添加这个库依赖就是 compile proiect(':helper'),这样声明即可,另外的 testCompile 是用于声明测试用例库的

今天就分享到这里,今天分享的内容非常短,但却是非常重要的,希望大家可以好好掌握,明天就是周末了,大家周末愉快



史上最全Android-build-gradle配置详解(1),实现原理讲解 链图片转存中…(img-YVAD9eHW-1710935505552)][外链图片转存中…(img-Q170pc9X-1710935505552)] 阅读详情

相关推荐

build.gradle 文件

在文件中,可以直接使用task关键字定义一个简单的任务。doLast {这种方式适用于简单的任务定义。可以通过继承类来实现更复杂的任务逻辑。在这个例子中,我们定义了一个名为CustomTask的类,并在文件中注册了这个任务,设置了它的描述和分组。这将执行我们在文件中定义的customTask。自定义任务可以作为其他任务的依赖来间接执行。doLast {doLast {在这个例子中,taskA依赖于taskB,因此在执行taskA之前会先执行taskB。可以在项目的buildSrc。

百态·数智思维 | 聚焦大数据、量化与未来AI 2193

详解build.gradle文件

详解Android studio中的build.gradle文件

三人行必有我师的博客 1万+

Android 详解build.gradle文件

Android Studio是采用Gradle来构建项目的。Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置。 首先看项目最外层目录下的build.gradle文件,代码如下所示: buildscript { repositories { google() jcenter() } d...

安卓兼职framework和app工程师的博客 626

Android Gradle(1)- build.gradle介绍

android项目中,gradle相关文件如下: * `项目build.gradle`:配置项目的整体属性,比如指定使用的代码仓库、依赖的Gradle插件版本等等。 * `模块build.gradle`:配置当前Module的编译参数。 * `gradle-wrapper.properites`:配置Gradle Wrapper。

yihanss的博客 1279

【Android开发日志】build.gradle 文件详解(6)

build.gradle 文件详解根目录下的build.gradleapp下的build.gradle文件 Gradles是一个非常先进的项目构建工具,来源不详述。 在第二篇我们说过,有两个build.gradle文件,一个在项目根目录,一个在app文件夹内。 根目录下的build.gradle 源代码如下: buildscript { ext.kotlin_version = '1.3.71' repositories { google() jcenter(

Ly0309Xuan1111的博客 537

【VSCode】【Clangd】从零构建:基于LLVM/Clangd+MINGW+CMake的Windows高性能C/C++开发环境实战

本文详细介绍了如何在Windows平台搭建基于LLVM/Clangd+MINGW+CMake的高性能C/C++开发环境。通过VSCode配置Clangd语言服务器,结合MINGW提供的GCC工具链和CMake的跨平台构建能力,实现轻量级、高效率的开发体验。文章包含从环境准备到实战配置的完整指南,特别适合追求开发效率和跨平台兼容性的开发者。

weixin_28839629的博客 313

Android 中 build.gradle 文件详解

一、简介 一般来说一个新创建的项目中,有两个 build.gradle 文件,一个是工程目录下的,一个是 app 目录下的,这两个 build.gradle 文件对 Android Studio 项目的作用是非常重要的,接下来我们就新建一个项目来进行详细的分析,这里大家可以随便自己新建一个项目 1)工程目录下的 build.gradle 文件 buildscript { reposito...

读研功夫 3325

python 中心线提取_二值分析 | OpenCV + skimage如何提取中心线

点击上方蓝字关注我们微信公众号:OpenCV学堂关注获取更多计算机视觉与深度学习知识问题前几天有个人问了我一个问题,问题是这样的,他有如下的一张二值图像:怎么得到白色Blob中心线,他希望的效果如下:显然OpenCV中常见的轮廓分析无法获得上面的中心红色线段,本质上这个问题是如何提取二值对象的骨架,提取骨架的方法在OpenCV的扩展模块中,另外skimage包也支持图像的骨架提取。这里就...

weixin_42204453的博客 4290

android开发中build.gradle文件详解

app目录下的build.gradle文件 apply plugin: 'com.android.application' //表示这是一个应用 com.android.library表示这是一个库文件 android { compileSdkVersion 29 //sdk版本 buildToolsVersion "29.0.0" //构建工具版本 de...

qq_31805885的博客 1215

奇安信 2025 年护网蓝队初选笔试题(附答案解析)

熬夜为大家整理了 奇安信 2025 年护网蓝队初选笔试题,(关注我我会持续更新)涵盖 SQL 注入、Web 安全、渗透测试、二进制安全 等核心知识点,并附上详细答案解析,助力大家高效备考!12.下列关于虚表指针描述正确的是(1.5分)✅ B. 虚表指针存储的是虚表的首地址❌ A. 任何类对象都存在虚表指针(仅含虚函数的类有)❌ C. 虚表指针位于对象内存空间的起始处(由编译器决定)❌ D. 虚表指针是否存在不影响对象所占内存空间的大小(存在时会增加指针大小)📌 解析:虚表指针(vptr)用于实现多态,指向

Aishenyanying33的博客 4697

Kalibr标定避坑指南:如何用AprilGrid板快速完成双目IMU标定

本文详细介绍了使用AprilGrid板进行Kalibr双目IMU联合标定的实战技巧,包括标定工具选型、数据采集优化、标定流程及结果验证。通过AprilGrid板的唯一标识性和抗遮挡优势,结合IMU静止标定和运动激励设计,显著提升标定精度。文章还提供了常见报错处理和高级优化技巧,帮助开发者高效完成传感器标定。

sunny的博客 282

Android Studio 中的 gradle 介绍及build.gradle配置文件详解

不同于 Eclispse,Android Studio 是采用 Gradle 来构建项目的,Gradle 是一个非常先进强大的项目构建工具,它使用了一种基于 Groovy 领域的特定语言(DSL)来声明项目设置,摒弃了基于 XML(如 Ant 和 Maven)的各种繁琐的配置,今天我们就来一起探讨 Android Studio 中强大的项目构建工具 Gradle ###一.gradle 是什么?...

muranfei的博客 3万+

【DNN实现二分类模型推理部署(C#)----20240712】

【DNN实现二分类模型推理部署(C#)----20240712】

weixin_44119674的博客 212

详解Android studio的构建文件build.gradle

在Android studio 中采用gradle 来构建项目,当项目创建后,会自动生成两个build.gradle文件,一个在项目根目录下,一个是在App目录下。这两个文件对构建Android studio项目起到至关重要的作用,下面我们就来详细解说这两个文件的内容。 首先,最外层项目目录下的build.gradle文件, 代码如下所示: buildscript{ repositor

Nico的知识小站 1381

国科大学习资料--数据挖掘(刘莹)--第三章习题及参考答案

国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 第 3 章分类与回归 3.1简述决策树分类的主要步骤。 答:决策树生成的过程如下: (1)对数据源进行数据预处理, 得到训练集和测试集; (2)对训练集进行训练; (3)对初始决策树进行树剪枝; (4)由所得到的决策树提取分类规则; (5)使用测试数据集进行预测,评估决策树模型; 3.2给定决策树,选项有:(1)将决策树转换成规则,然后对结果

无名何许人的博客 3092

Autosar入门_OS_5

os hook函数说明

u012406840的博客 398

Android开发build.gradle文件详解

不同于eclipse,AS是用Gradle来构建项目的。Gradle是一个很先进的项目构建工具,使用了基于Groovy的领域特定语言(DSL)来进行项目设置,摒弃了传统基于XML(如Maven)的各种繁琐配置。 最外层目录下的build.gradle文件: buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.

weixin_44965650的博客 557

AutoSAR_BSW高阶 7. Signal Group 信号组

Autosar BSW的高级配置是实现复杂汽车电子系统的关键步骤之一。通过合理配置信号组和使用适当的参数,您可以提高系统性能,确保数据的可靠传输。在本博客中,我们深入探讨了信号组的概念和高级配置参数,并提供了示例代码,希望这些信息能够帮助您更好地理解和应用Autosar BSW的高级配置。如果您在配置过程中遇到任何问题,不妨寻求专业支持,以确保您的汽车电子系统能够顺利运行。Autosar COM 模块是一个广泛应用于汽车行业的关键技术,它使不同的电子控制单元能够有效地通信和协作。

一直在水些技术小文 662

详解Android下的build.gradle文件

详解Android下的build.gradle文件 前言 不同于Eclipse,Android Studio是采用Gradle来构建项目的。Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置,摒弃了传统基于XML(如Ant和Maven)的各种烦琐配置。 Android项目中有两个build.gradle文件: 一个是在最外层目录下的 ...

MRYZJ的博客 907

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android build.gradle文件详解

Android build.gradle详解 什么是gradle? gradle是一个项目构建工具,java开发中有两个大名鼎鼎的项目构建Maven,Ant,其中maven简单易控深受开发者喜爱。 项目构建工具是什么?能干吗? 开发某些项目时,需要很多jar或者库的支持,还没开始开发就下载了n多个库,浪费了时间不说,这些库之间兼容性又无法保证。删了?白下载了。不删?又不兼容。此时就需要使用项

小鼠标的博客 8307

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android Studio中build.gradle文件详解

在编写程序的时候,有时候我们需要兼容不同系统版本的手机来进行真机测试,所以有时候我们需要修改sdk或者其他的东西的版本号,这时候我们就需要了解build.gradle文件了。 首先,在Android studio的一个工程里,在Gradle Scripts目录下,有一个文件build.gradle(Module:app),打开。这里我随便选了一个工程的build.gradle文件做例子:

dafeng5455的博客 699

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android——build.gradle 文件详解

安卓项目中有两个build.gradle文件,一个在最外层目录下,一个是在app目录下。 最外层目录下的build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.3...

本然233的博客 1589

Android Studio build.gradle 文件详解

dependencies闭包中classpath声明的插件,因为Gradle并不是专门为构建Android项目而开发的,因此我们要使用它来构建Android项目。一个是工程目录下的也就是最外层 项目build.gradle,一个是 app 目录下的内层 运用build.gradle。jcenter仓库中包含第三方的开源库。google仓库中包含自家的扩展依赖库,两个 build.gradle 文件。

蜗牛牛的博客 736

详解Android中的build.gradle文件

一、什么是Gradle 简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。“ 实际上,a...

bangqi5507的博客 570

android studio build.gradle,Android Studio开发Android(一)——build.gradle文件详解

Android Studio采用Gradle构建项目。项目中又两个build.gradle文件,一个在最外层的目录中,一个在app目录下。最外层目录的build.gradle// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {r...

weixin_34902131的博客 577
上一篇: Android 四大组件之 BroadcastReceiver
下一篇: Android Activity 完全解析(下)
QDJdeveloper
博客等级 码龄11年 108粉丝 49原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值