Android Studio 项目中,会存在多个 .gradle 文件。其中, project 目录下存在一个build.gradle 文件和一个settings.gradle文件;每一个module会存在一个build.gradle文件。
(1)project目录下的Gradle文件
默认的 project 目录下的 build.gradle 文件内容:
buildscript {
repositories {
jcenter()//这是构建插件所使用的远程库
}
dependencies{
classpath 'com.android.tools.build:gradle:1.3.0'
//这是项目所使用的 Android gradle 版本
}
}
allprojects {
repositories {
jcenter()(http://jcenter.bintray.com/)
//这是使用远程库依赖的时候的远程库
}
}
()buildscript :用于设置驱动构建过程的代码。
jcenter():声明使用maven仓库。表示依赖从Bintary’sJCenter Maven仓库中获取。
mavenCentral() (老版本中):表示依赖从 Central Maven 2 仓库中获取
mavenLocal():表示依赖从本地的Maven仓库中获取
dependencies :声明了使用 Android Studio gradle 插件版本。一般升级AS或者导入从Eclipse中生成的项目时需要修改下面gradle版本。
()allprojects:设置每一个 module 的构建过程。在此例中,设置了每一个 module 使用 maven 仓库依赖。
(2)project 目录下的 settings.gradle 文件
默认的 project 目录下的 settings.gradle 文件内容:
include ':app'
()include ‘:app’:表示当前 project 下有一个名称为app的module 。
如果你的一个 module 并不是 project 根目录下,你可以这么设置。
project(‘:app2’).projectDir = new File(‘path/to/app2’)
(3)module目录下的Gradle文件
完整的module目录下的build.gradle文件内容:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
lintOptions {
abortOnError false
}
defaultConfig {
applicationId "com.hhb"
minSdkVersion 15
targetSdkVersion 23
versionCode 481
versionName "4.7.3"
// dex突破65535的限制
multiDexEnabled true
}
signingConfigs {
release {
storeFile file('hhb')
storePassword 'hhb'
keyAlias 'hhb'
keyPassword 'hhb'
}
debug {
storeFile file('hhb')
storePassword 'hhb'
keyAlias 'hhb'
keyPassword 'hhb'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
zipAlignEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
minifyEnabled true
zipAlignEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
yaowang_yaodian{
manifestPlaceholders = [channel:'yaodian', debuggable: 'false', loggable: 'false']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}
()apply plugin: ‘com.android.application’
表示这是一个 android application module 。
如果是com.android.library
表示这是一个 android library module 。
()android:配置所有android构建过程需要的参数。
compileSdkVersion:用于编译的 SDK 版本。
buildToolsVersion:用于 Gradle 编译项目的工具版本。
lintOptions :执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉
defaultConfig:Android 项目默认设置。
applicationId:应用程序包名。
minSdkVersion:最低支持 Android 版本。
targetSdkVersion:目标版本。
versionCode:版本号。
versionName:版本名称。
signingConfigs:设置签名文件信息
buildTypes:编译类型(打包类型)。默认有两个: release 和 debug 。我们可以在此处添加自己的 buildTypes 。
signingConfig :配置签名文件
minifyEnabled:是否使用混淆。
zipAlignEnabled:Zipalign优化
shrinkResources:删除无效的Resource
shrinkResources依赖于minifyEnabled,必须和minifyEnabled一起用,这样生成的APK会小很多.
proguardFiles:使用的混淆文件,一个是系统默认的混淆文件,它位于sdk\tools\proguard\proguard-android.txt。proguard-rules.pro文件是项目中自定义的混淆文件。
productFlavors :渠道配置
()dependencies:用于配制引用的依赖。
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
引用当前 module 目录下的 libs 文件夹中的所有 .jar 文件。
compile’com.android.support:appcompat-v7:23.0.0’
引用23.0.0版本的 appcompat-v7(appcompat-v7指的是v7 library 项目)。
compile分为三部分 groupdId:artifactId:version
com.android.support:对应groupId
appcompat-v7对应 artifactId
23.0.0对应 version
参考资料:
Android Studio 中文社区 http://www.android-studio.org