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,远程,本地库,也支持单文件。如果前面定义了repositories{}maven 库,则使用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 21targetSdkVersion 22versionCode 1versionName "1.0"}//编译配置compileOptions {// java版本sourceCompatibility JavaVersion.VERSION_1_7targetCompatibility 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检查的errorabortOnError 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下面找依赖的aarcompile (name:'ui', ext:'aar')// 编译extras目录下的ShimmerAndroid模块// 使用transitive属性设置为false来排除所有的传递依赖,默认为truecompile 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的gradle 设置如下 "project-level settings"选择gradle是采用默认的即网上下载的还是选择本地即离线安装包.这里我们一般 ...
- 拥抱 Android Studio 之二:Android Studio 与 Gradle 深入
2019独角兽企业重金招聘Python工程师标准>>> 关于学习方式 曾经跟朋友讨论过我们所接受过的大学工科教育,都是一上来先学基础理论,最后再来一个金工实习.一开始不知道为什么而学 ...
- Android Studio使用Gradle上传AAR至Maven
这几天有个开源library要上传到Maven Central Repository,找到某大神的博客,他用Maven上传的库,我依葫芦画瓢搞了两天,卧槽,可能是人品问题,mvn一直报一个莫名其妙的异 ...
- android studio怎么添加按钮,Android Studio 工具栏添加常用按钮
本文中 Android Studio 的版本为 android Studio 2.2 ,操作系统为 Windows,如有操作不同,可能是版本差异. 在工具栏中添加一些常用的按钮,如设置.DDMS,有利 ...
- Android Studio不安装opencv manager配置
Android Studio不安装opencv manager配置 from: http://jingyan.baidu.com/article/60ccbceb53533364cab197db.ht ...
- Android开发:Android Studio中gradle的代理问题
项目启动报错: If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle ...
- Android Studio下载、安装、配置及连接真机开发第一个App ——入门选手快进
最近的安卓测试给我心态搞蹦了,问也没人问,难受简直了!又是一轮自学之路(说实话这一路上教会我一个很大的道理就是一定要有愿意帮助你的老师,还有自己的自觉,一样也不能少.前者没有的话只能后者补了呜呜呜 ...
- 修改gradle版本android,Android Studio 修改Gradle版本
Android Studio 修改Gradle版本 2020年07月24日 | 萬仟网移动技术 | 我要评论 Android Studio 修改Gradle版本实际开发中,我们在使用一些demo或者更 ...
- Android studio 和 gradle插件版本对应关系(最新 2022年)
官网链接:Android Gradle 插件版本说明 | Android 开发者 | Android Developers 由于网络的问题,在更新了Android studio版本之后,不能同 ...
最新文章
- iOS10 UI设计基础教程
- Hibernate从零开始_07_多对多关系(中间表)
- 【转】Java虚拟机(JVM)以及跨平台原理
- 在往sql server 插入数据时 报此错误“ 消息 8152,级别 16,状态 14,第 1 行 将截断字符串或二进制数据。”...
- 全国计算机等级考试题库二级C操作题100套(第77套)
- facebook 邀请好友_如何在Facebook上与某人解除好友
- kotlin 计算平方_Kotlin程序计算自然数之和
- Vue之实例的生命周期
- LeetCode 1391. 检查网格中是否存在有效路径(BFS)
- linux内实践核分析模块
- 为什么要使用getter/setter
- 【论文】Realtime lane tracking of curved local road 检测和跟踪功能
- python打包的exe反编译_反编译python打包的exe到源代码
- CSI笔记【4】:信道估计/Channel Estimation
- Linux环境,使用convert命令批量转换JPG图片——缩小图片尺寸
- 前端 js base64解密
- jquery canvas网页画布画图
- chrome点击下载链接没有反应
- 20年3月27日,Github被攻击。我的GitPage博客也挂了,紧急修复之路,也教会你搭建 Jekyll 博客!
- octobercms mysql_手把手教你选择一款适合自己的CMS/博客程序