module中的build.gradle的文件配置。
一般主要包括如下根节点:
apply plugin
必须放在第一行,它可以指定这个module是一个应用(用 apply plugin: ‘com.android.application’ 配置),或是一个库(用 apply plugin: ‘com.android.library’ 配置)。
allprejects
依赖中一些lib的仓储位置。有些lib的仓储位置是一些特别的地址,在这里进行设置。
eg:
repositories {
jcenter()
maven {
url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'
}
maven {
url "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies
项目中的依赖库,在这里设置。
compile fileTree(include: ['*.jar'], dir: 'libs')
表示 编译时,可以依赖包括libs下的jar包。如果项目中有jar包,必须添加此行才能依赖jar
compile files('libs/android-async-http-master.jar')
表示依赖libs下的android-async-http-master.jar
compile project(':library')
表示 依赖本地的library类型的叫做 library 的 module。
compile 'com.android.support:appcompat-v7:21.0.3'
表示依赖远程库 com.android.support:appcompat-v7:21.0.3。
主要讲讲 android 根节点
android节点主要包含一下节点:
android {
compileSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION as int
buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
}
buildTypes {
}
compileOptions {
}
sourceSets {
}
lintOptions {
}
productFlavors {
flavor1 {
}
flavor2 {
}
}
signingConfigs {
release {
storeFile file(×.keystore)
storePassword ×××
keyAlias ××××
keyPassword ×××
}
}
}
我们来逐一认识下:
compileSdkVersion 21
buildToolsVersion 21.1.2
这两个是指定的编译的SDK版本,以及编辑工具版本。
defaultConfig
这个是默认配置,相当于eclipse中manifest中的一些基本配置,buildType中也将自动继承。
它里面可以放入很多配置,如下面buildTypes/release的一些配置也可放入其中:
defaultConfig {
applicationId com.example.app.application
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName 1.0
ndk {
moduleName app
cFlags -DANDROID_NDK -D_RELEASE
ldLibs m, log, jnigraphics
abiFilters all
}
}
这里,如果是apk项目必须要applicationId 配置,表示的是包名。但如果是library类型的则不需要。
下面一次是:最小sdk版本15,目标sdk版本21,代码版本1,版本名称1.0等apk的基本信息。
ndk部分,作用是可以直接编译ndk代码,不需要自己执行。
buildType
这里进行编译配置,系统默认有release(发布配置)和debug(调试配置)
buildTypes {
release {
minifyEnabled true // Enables code shrinking for the release build type.
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfigs signingConfigs.release
}
debug{
}
}
其中,release 能进行缩量混淆配置(减小apk体积)minifyEnabled true,以及 进行混淆文件设置 proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’,还能对签名工具进行配置 signingConfigs signingConfigs.release.
compileOptions
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
对java的版本配置,以便使用对应版本的一些新特性。
sourceSets
重新指向源码路径
sourceSets {//目录指向配置
main {
manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件
java.srcDirs = ['src']//指定source目录
resources.srcDirs = ['src']//指定source目录
aidl.srcDirs = ['src']//指定source目录
renderscript.srcDirs = ['src']//指定source目录
res.srcDirs = ['res']//指定资源目录
assets.srcDirs = ['assets']//指定assets目录
jniLibs.srcDirs = ['libs']//指定lib库目录
}
debug.setRoot('build-types/debug')//指定debug模式的路径
release.setRoot('build-types/release')//指定release模式的路径
}
lintOptions
lintOptions {
abortOnError false
}
这个设置编译的lint开关。程序在build的时候,会执行lint检查,有任何错误或者警告提示,都会终止构建,我们可以将其关掉。
productFlavors
productFlavors {
free {
applicationId 'com.example.myapp.free'
}
paid {
applicationId 'com.example.myapp.paid'
}
}
}
productFlavors块,你可以配置多个产品风味(免费版、付费版、不同渠道版)。这里你可以创建不同版本的app,通过重写defaultConfig{}的设置。productFlavors是可选的。默认情况下,系统不会自动创建。每个flavor都可以自己的的application id。
signingConfigs
signingConfigs {
release {
storeFile file(×.keystore)
storePassword ×××
keyAlias ××××
keyPassword ×××
}
}
包签名的配置,你可以设置具体的签名文件,签名密码等等
更多内容请看:Android官方AS配置文档地址:https://developer.android.com/studio/build/index.html