AndroidStudio的Gradle完全教程
目录
- 背景
- 工程配置
- 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完全教程相关推荐
- 关于AndroidStudio中Gradle文件引发的问题导致HelloWorld无法运行的解决方法
关于AndroidStudio中Gradle文件引发的问题导致HelloWorld无法运行的解决方法 前言 AndroidStudio下载 安装教程(超级详细) 官网下载 点击启动安装 配置文件 He ...
- 一篇文章了解Github和Git教程-AndroidStudio上传Github教程
前言 为了方便保存自己的代码,下班后可以回家继续进行,自己的码农工作,介绍一下Github. 什么是Github呢? 作为一个编程人员,我觉得得了解一下Github吧! 当然,如果你放弃了码农或者技术 ...
- Git使用教程-idea系列(idea、webstorm、phpstorm、androidstudio)中git使用教程
Git使用教程 idea.webstorm.phpstorm.androidstudio中git使用教程 aiprose 个人随笔上线,网址 aiprose.com 点击访问 首先你的安装git,wi ...
- Gradle学习教程
Gradle学习教程 一.Gradle是什么 二.为什么要Gradle 三.如何安装Gradle 四.核心概念基础 五.Gradle构建的生命周期 初始化阶段 配置阶段 执行阶段 六.任务-(简单任务 ...
- as安装过程中gradle_重新认识AndroidStudio和Gradle,这些都是我们应该知道的
前言 主要从AndroidStudio的环境安装升级GradleEclipse转AS,多渠道配置Maven私服Action,Option快捷键等几个方面出发讲一些操作技巧以及我对AndroidStud ...
- AndroidStudio Refreshing Gradle Project编译更新Gradle卡住问题
描述 重新安装AndroidStudio或从Eclipse换到AS的时候,在编译新的项目的时候,一般会遇到如下图那样. 一般是因为在AndroidStudio每次更新版本都会更新Gradle这个插件( ...
- AndroidStudio 用Gradle把Moudle打成jar包
说明: AndroidStudio 把Moudle打成jar包,使用Gradle命名配置要打包的内容,然后使用命令行执行打包. 大哥们写文章很累,转载请说出处呀!AndroidStudio 把Moud ...
- Gradle系列教程之依赖管理
这一章我将介绍Gradle对依赖管理的强大支持,学习依赖分组和定位不同类型仓库.依赖管理看起来很容易,但是当出现依赖解析冲突时就会很棘手,复杂的依赖关系可能导致构建中依赖一个库的多个版本.Gradle ...
- proguard java 教程,[Gradle中文教程系列]-跟我学Gradle-使用proguard混淆你的spring boot应用...
使用proguard混淆你的spring boot应用 Proguard介绍 安卓开发的同学想必对Proguard都是十分熟悉的,由于java的反编译实在是太容易,使用它可以对java源码进行混淆处理 ...
最新文章
- KDE与GNOME的起源与发展
- php中$GLOBALS
- 用python实现AES加密解密
- java bom json,JSON字符串带BOM头ufeff
- 小程序沉浸式_企业开发小程序:客户裂变式增长
- CSS之flex需要知道的一切(二)
- 微服务架构 —— 服务雪崩与容错方案
- JAVA day10、11、12 飞机大战
- 分布式SQL引擎是如何炼成的 —— 运行时探秘(上)
- 新编16 32位微型计算机原理及应用,新编16/32位微型计算机原理及应用(第5版)...
- Kali-linux :arping命令
- SPSS实现线性回归
- 微软阿根廷服务器解锁,XBOX阿根廷服购买教程
- MacBook safari一直闪退打不开,提示意外退出也重新启动不了
- 解决报错: You have not concluded your merge (MERGE_HEAD exists)
- 在win10自带的mail中如何设置学校邮箱
- vue中对echarts折线图设置基准线/警告线,可在输入框输入想要的值,并改变已有的基准线的值。
- tensorflow学习笔记(二十六):构建TF代码
- 公网访问本地内网web服务器【内网穿透】
- Python-import导入上级目录文件