Android Studio的Gradle常用命令配置和依赖管理
Posted tuke_tuke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio的Gradle常用命令配置和依赖管理相关的知识,希望对你有一定的参考价值。
一,gradlew常用命令
./gradlew -v 版本号
./gradlew clean 清除工程目录下的build文件夹
./gradlew build 检查依赖并编译打包
这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包
除此之外,assemble还可以和productFlavors结合使用,比如定义了 installRelease ,uninstallRelease 两个productFlavors,则可以如下命令:
./gradlew installRelease Release模式打包并安装
./gradlew uninstallRelease 卸载Release模式包
二,Gradle配置
Gradle构建脚本 build.gradle:
Gradle属性文件 gradle.properties
Gradle设置文件 settings.gradle
build.gradle
先看整个项目的gradle配置文件:
buildscript
repositories
jcenter()
dependencies
classpath 'com.android.tools.build:gradle:1.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
allprojects
repositories
jcenter()
内容主要包含了两个方面:
一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。
另一个是声明了Android gradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本
某个Moudle的gradle配置文件:
buildscript
buildscript
repositories
maven url 'http://*********'
dependencies
classpath 'com.android.tools.build:gradle:1.3.1'
1,buildscript设置脚本的运行环境。2,repositories支持java依赖库管理,用于项目依赖。
3,dependencies依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件。如果前面定义了repositoriesmaven 库,则使用maven的依赖库,使用时只需要按照用类似于com.android.tools.build:gradle:0.4,gradle 就会自动的往远程库下载相应的依赖。
apply
//声明是Android程序
apply plugin: 'com.android.application'
apply plugin:声明构建的项目类型。如果是库的话就加
apply plugin: 'com.android.library'
android
android
// 编译SDK的版本
compileSdkVersion 22
// build tools的版本
buildToolsVersion "23.0.1"
//aapt配置
aaptOptions
//不用压缩的文件
noCompress 'pak', 'dat', 'bin', 'notice'
//打包时候要忽略的文件
ignoreAssetsPattern "!.svn:!.git"
//分包
multiDexEnabled true
//--extra-packages是为资源文件设置别名:意思是通过该应用包名+R,com.android.test1.R和com.android.test2.R都可以访问到资源
additionalParameters '--extra-packages', 'com.android.test1','--extra-packages','com.android.test2'
//默认配置
defaultConfig
//应用的包名
applicationId "com.example.heqiang.androiddemo"
minSdkVersion 21
targetSdkVersion 22
versionCode 1
versionName "1.0"
//编译配置
compileOptions
// java版本
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
//源文件目录设置
sourceSets
main
//jni lib的位置
jniLibs.srcDirs = jniLibs.srcDirs << 'src/jniLibs'
//定义多个资源文件夹,这种情况下,两个资源文件夹具有相同优先级,即如果一个资源在两个文件夹都声明了,合并会报错。
res.srcDirs = ['src/main/res', 'src/main/res2']
//指定多个源文件目录
java.srcDirs = ['src/main/java', 'src/main/aidl']
//签名配置
signingConfigs
debug
keyAlias 'androiddebugkey'
keyPassword 'android'
storeFile file('keystore/debug.keystore')
storePassword 'android'
buildTypes
//release版本配置
release
debuggable false
// 是否进行混淆
minifyEnabled true
//去除没有用到的资源文件,要求minifyEnabled为true才生效
shrinkResources true
// 混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.debug
//ndk的一些相关配置,也可以放到defaultConfig里面。
//指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,arm-v8之类的so会被过滤掉)
ndk
abiFilter "armeabi"
//debug版本配置
debug
debuggable true
// 是否进行混淆
minifyEnabled false
//去除没有用到的资源文件,要求minifyEnabled为true才生效
shrinkResources true
// 混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.debug
//ndk的一些相关配置,也可以放到defaultConfig里面。
//指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,arm-v8之类的so会被过滤掉)
ndk
abiFilter "armeabi"
// lint配置
lintOptions
//移除lint检查的error
abortOnError false
//禁止掉某些lint检查
disable 'NewApi'
android设置编译android项目的参数,构建android项目的所有配置都写在这里。 除了上面写的,在android块中可以包含以下直接配置项:
productFlavors 产品风格配置,ProductFlavor类型
testOptions 测试配置,TestOptions类型
dexOptions dex配置,DexOptions类型
packagingOptions PackagingOptions类型
jacoco JacocoExtension类型。 用于设定 jacoco版本
splits Splits类型。
repositories
repositories
flatDir
//本地jar依赖包路径
dirs '../../../../main/libs'
dependencies
dependencies
compile files('libs/android-support-v4.jar')
//在flatDir.dirs下面找依赖的aar
compile (name:'ui', ext:'aar')
// 编译extras目录下的ShimmerAndroid模块
// 使用transitive属性设置为false来排除所有的传递依赖,默认为true
compile project(':extras:ShimmerAndroid')
transitive = false
// 编译CommonSDK模块,但是去掉此模块中对com.android.support的依赖,防止重复依赖报错
compile (project(':CommonSDK')) exclude group: "com.android.support"
provided fileTree(dir: 'src/android5/libs', include: ['*.jar'])
provided 'com.android.support:support-v4:21.0.3'
provided project(':main-host')
//通用使用exclude排除support-compat模块的依赖
compile ('com.jakewharton:butterknife:8.5.1')
exclude module: 'support-compat'
compile和provided:compile表示编译时提供并打包进apk。
provided表示只在编译时提供,不打包进apk。
exclude 防止重复依赖,后面会重点介绍
transitive 排除所有的传递依赖,后面会重点介绍include
三,依赖库管理
本地依赖
dependencies
//单文件依赖
compile files('libs/android-support-v4.jar')
//某个文件夹下面全部依赖
compile fileTree(dir: 'src/android6/libs', include: ['*.jar'])
compile (name:'ui', ext:'aar')
compile (project(':CommonSDK')) exclude group: "com.android.support"
provided fileTree(dir: 'src/android5/libs', include: ['*.jar'])
provided 'com.android.support:support-v4:21.0.3'
provided project(':main-host')
远程依赖
gradle同时支持maven,ivy,以maven作为例子
repositories
//从中央库里面获取依赖
mavenCentral()
//或者使用指定的本地maven 库
maven
url "file://F:/githubrepo/releases"
//或者使用指定的远程maven库
maven
url "https://github.com/youxiachai/youxiachai-mvn-repo/raw/master/releases"
dependencies
//应用格式: packageName:artifactId:version
compile 'com.google.android:support-v4:r13'
以上是关于Android Studio的Gradle常用命令配置和依赖管理的主要内容,如果未能解决你的问题,请参考以下文章
android-studio如何通过命令行运行gradle编译命令
android studio怎样在terminal下执行gradle 命令
我安装了Android Studio,但我无法通过命令行访问gradle