目录

  • 背景
  • 工程配置
  • root下build.gradle文件结构
    • 基本文件结构:
    • **统一修改版本号**
    • **预定义**
  • moudle的build.gradle文件
    • 具体使用
  • gradlew命令
    • 常见使用
  • gradle.properties文件
  • local.properties
  • setting.gradle
  • 书写task

背景

gradle语法是基于Groovy语言,Groovy是一种敏捷的动态语言,既可以面向对象编程,又可以用作纯粹的脚本语言,其运行在JVM上,能够与java代码很好的结合,也能扩展现有代码。


工程配置

工程中的位置:

#Tue Dec 10 09:19:23 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

修改上面的版本号,同步一下即可更改工程使用的gradle版本。


root下build.gradle文件结构

基本文件结构:

ext {   //预定义
}
buildscript {   //编译设置repositories {  库地址}dependencies {  依赖库}
}
allprojects {repositories {  总的依赖地址maven {  }  maven库}
}task

举例文件:

// 预定义
ext {supportLibraryVersion = '28.0.0'buildToolsVersion = '28.0.3'minSdkVersion = 19compileSdkVersion = 28targetSdkVersion = 23versionCode = 683000007versionName = "6.8.3.000007"ext.kotlin_version = '1.3.50'
}buildscript {repositories {maven { url "http://localhost:8081/repository/maven-public/" }google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:3.5.2'classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50"}
}allprojects {repositories {maven { url "http://localhost:8081/repository/maven-public/" }google()jcenter()//maven { url "https://jitpack.io" }}
}task clean(type: Delete) {delete rootProject.buildDir
}

统一修改版本号

在root下的build.gradle的allprojects节点下:

configurations.all {resolutionStrategy.eachDependency { DependencyResolveDetails details ->def requested = details.requestedif (requested.group == 'com.android.support') {if (!requested.name.startsWith("multidex")) {details.useVersion rootProject.ext.supportVersion}}}resolutionStrategy{force 'com.google.code.gson:gson:2.8.5'}}

预定义

ext {supportLibraryVersion = '28.0.0'buildToolsVersion = '28.0.3'minSdkVersion = 19compileSdkVersion = 28targetSdkVersion = 23versionCode = 183000007versionName = "1.8.3.000007"ext.kotlin_version = '1.3.50'
}

在其他地方可以这么引用rootProject

 compileSdkVersion rootProject.compileSdkVersionbuildToolsVersion rootProject.buildToolsVersionminSdkVersion rootProject.minSdkVersiontargetSdkVersion rootProject.targetSdkVersion

moudle的build.gradle文件

文件结构

android {defaultConfig {      multiDexEnabled true   //多dex配置ndk { //ndk打包的架构}lintOptions {}packagingOptions {   //打包选项}}configurations {}compileOptions {  //Android O 以上需要用java 8}buildTypes {  //编译类型release {}debug {}}sourceSets { //源码设置main {}}dataBinding { //dataBinding设置}repositories {flatDir {}}
}
dependencies {}
task

举个例子

apply plugin: 'com.android.application'
apply plugin: 'com.android.library'//kotlin配置
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'//引入其他文件
apply from: 'upload.gradle'android {compileSdkVersion rootProject.compileSdkVersionbuildToolsVersion rootProject.buildToolsVersiondefaultConfig {applicationId "com.demo"minSdkVersion rootProject.minSdkVersiontargetSdkVersion rootProject.targetSdkVersionversionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//多dex配置multiDexEnabled true//ndk打包的架构ndk {abiFilters "armeabi"}//连接lintOptions {quiet trueabortOnError false}//打包选项packagingOptions {exclude 'lib/x86_64/libjingle_peerconnection_so.so'exclude 'lib/arm64-v8a/libjingle_peerconnection_so.so'exclude 'META-INF/DEPENDENCIES'exclude 'META-INF/NOTICE'exclude 'META-INF/LICENSE'exclude 'META-INF/LICENSE.txt'exclude 'META-INF/NOTICE.txt'}}// configurations {cleanedAnnotationscompile.exclude group: 'org.jetbrains' , module:'annotations'}//Android O 以上需要用java 8compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}//编译类型buildTypes {release {minifyEnabled falsezipAlignEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}debug {minifyEnabled falsezipAlignEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}//源码设置sourceSets {main {manifest.srcFile 'AndroidManifest.xml'java.srcDirs = ['src']resources.srcDirs = ['src']aidl.srcDirs = ['src']renderscript.srcDirs = ['src']res.srcDirs = ['res']assets.srcDirs = ['assets']jniLibs.srcDirs = ['libs']}}//dataBinding设置dataBinding {enabled true}repositories {flatDir {dirs 'libs' //这样可以使用libs里面的aar}}
}dependencies {//导入文件夹implementation fileTree(dir: 'libs', include: ['*.jar'])//导入某某库implementation 'androidx.appcompat:appcompat:1.0.0'//导入子库implementation project(path: ':Location')
}

具体使用

编译成应用

apply plugin: ‘com.android.application’

编译成模块

apply plugin: ‘com.android.library’

sourceSets
指明文件的路径,是在src同级目录开始索引。

sourceSets{main{res.srcDirs = ['src/custom/res','src/main/res']java.srcDirs = ['src/main/java']manifest.srcFile 'src/main/AndroidManifest.xml'assets.srcDirs=['src/custom/assets']}}

引入kotlin

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

引入其他文件

apply from: 'upload.gradle'

gradlew命令

编译模块的命令一般为: gradlew :模块名:taskname

常见使用

uploadArchives 上传模块
AndroidDependencies 查看依赖关系
siningReport 显示渠道包得签名信息

sourceSets 查看项目java ,res ,jni所在得资源位置

assembleDebug 打包所有应用程序debug包
assembleRelease 打包所有应用程序release包
build 打包所有,包括测试项内容
clean 删除构建build目录
cleanBuildCache 删除构建的缓存目录
buildEnvironment app module中声明的所有buildscript依赖项。
installDebug 安装Debug版本
uninstallDebug - 卸载Debug版本
assemble:对所有的 buildType 生成 apk 包。
clean:移除所有的编译输出文件,比如apk
check:执行lint检测编译。
build:同时执行assemble和check命令

gradle.properties文件

虚拟机大小
org.gradle.jvmargs=-Xmx1536m

串行编译
org.gradle.parallel=true

启用 androidx
android.useAndroidX=true

将依赖包也迁移到androidx
android.enableJetifier=true


local.properties

主要保存配置的地址
ndk.dir=C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\20.0.5594570
sdk.dir=C:\Users\Administrator\AppData\Local\Android\Sdk


setting.gradle

include ‘:app’ //包含模块
rootProject.name=‘Demo’ //工程的名字


书写task

编译aar
task makeAAR(type: Jar, dependsOn: [‘build’]) {}

AndroidStudio的Gradle完全教程相关推荐

  1. 关于AndroidStudio中Gradle文件引发的问题导致HelloWorld无法运行的解决方法

    关于AndroidStudio中Gradle文件引发的问题导致HelloWorld无法运行的解决方法 前言 AndroidStudio下载 安装教程(超级详细) 官网下载 点击启动安装 配置文件 He ...

  2. 一篇文章了解Github和Git教程-AndroidStudio上传Github教程

    前言 为了方便保存自己的代码,下班后可以回家继续进行,自己的码农工作,介绍一下Github. 什么是Github呢? 作为一个编程人员,我觉得得了解一下Github吧! 当然,如果你放弃了码农或者技术 ...

  3. Git使用教程-idea系列(idea、webstorm、phpstorm、androidstudio)中git使用教程

    Git使用教程 idea.webstorm.phpstorm.androidstudio中git使用教程 aiprose 个人随笔上线,网址 aiprose.com 点击访问 首先你的安装git,wi ...

  4. Gradle学习教程

    Gradle学习教程 一.Gradle是什么 二.为什么要Gradle 三.如何安装Gradle 四.核心概念基础 五.Gradle构建的生命周期 初始化阶段 配置阶段 执行阶段 六.任务-(简单任务 ...

  5. as安装过程中gradle_重新认识AndroidStudio和Gradle,这些都是我们应该知道的

    前言 主要从AndroidStudio的环境安装升级GradleEclipse转AS,多渠道配置Maven私服Action,Option快捷键等几个方面出发讲一些操作技巧以及我对AndroidStud ...

  6. AndroidStudio Refreshing Gradle Project编译更新Gradle卡住问题

    描述 重新安装AndroidStudio或从Eclipse换到AS的时候,在编译新的项目的时候,一般会遇到如下图那样. 一般是因为在AndroidStudio每次更新版本都会更新Gradle这个插件( ...

  7. AndroidStudio 用Gradle把Moudle打成jar包

    说明: AndroidStudio 把Moudle打成jar包,使用Gradle命名配置要打包的内容,然后使用命令行执行打包. 大哥们写文章很累,转载请说出处呀!AndroidStudio 把Moud ...

  8. Gradle系列教程之依赖管理

    这一章我将介绍Gradle对依赖管理的强大支持,学习依赖分组和定位不同类型仓库.依赖管理看起来很容易,但是当出现依赖解析冲突时就会很棘手,复杂的依赖关系可能导致构建中依赖一个库的多个版本.Gradle ...

  9. proguard java 教程,[Gradle中文教程系列]-跟我学Gradle-使用proguard混淆你的spring boot应用...

    使用proguard混淆你的spring boot应用 Proguard介绍 安卓开发的同学想必对Proguard都是十分熟悉的,由于java的反编译实在是太容易,使用它可以对java源码进行混淆处理 ...

最新文章

  1. KDE与GNOME的起源与发展
  2. php中$GLOBALS
  3. 用python实现AES加密解密
  4. java bom json,JSON字符串带BOM头ufeff
  5. 小程序沉浸式_企业开发小程序:客户裂变式增长
  6. CSS之flex需要知道的一切(二)
  7. 微服务架构 —— 服务雪崩与容错方案
  8. JAVA day10、11、12 飞机大战
  9. 分布式SQL引擎是如何炼成的 —— 运行时探秘(上)
  10. 新编16 32位微型计算机原理及应用,新编16/32位微型计算机原理及应用(第5版)...
  11. Kali-linux :arping命令
  12. SPSS实现线性回归
  13. 微软阿根廷服务器解锁,XBOX阿根廷服购买教程
  14. MacBook safari一直闪退打不开,提示意外退出也重新启动不了
  15. 解决报错: You have not concluded your merge (MERGE_HEAD exists)
  16. 在win10自带的mail中如何设置学校邮箱
  17. vue中对echarts折线图设置基准线/警告线,可在输入框输入想要的值,并改变已有的基准线的值。
  18. tensorflow学习笔记(二十六):构建TF代码
  19. 公网访问本地内网web服务器【内网穿透】
  20. Python-import导入上级目录文件

热门文章

  1. 数据湖与数据仓库:主要差异
  2. 服务器bios上传文件,巧改BIOS设置 让文件服务器性能提升10%
  3. 如何将多个excel表格合并成一个_怎样在线就能将多个PDF文档合并成一个?
  4. 记录每天学习的新知识:AlarmManager 定时任务
  5. jQuery学习: lt与gt
  6. Win10左下角搜索框无法搜索点击无反应的解决方法
  7. 最值得一看的几条简单的谷歌 Google 搜索技巧,瞬间提升你的网络搜索能力!
  8. DB DBS 和DBMS区别
  9. 宇视大屏蓝屏排查步骤
  10. 大前端CPU优化技术--NEON自动向量化