您的位置:首页 > 移动开发 > Android开发

android studio gradle plugin 用户指南 选择性翻译

2014-10-30 20:43 639 查看
原文

http://tools.android.com/tech-docs/new-build-system/user-guide

构建文件 build.gradle

Basic Project

1.最简单的配置:

apply plugin: 'java'


使用自带的java插件,用gradle编译java

2.最常见的android配置:

buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:0.11.1'
}
}

apply plugin: 'android'

android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
}


repositories 使用maven central repository
dependencies 依赖android plugin

apply plugin 使用android plugin
android {} 配置android plugin 参数,这个事dsl的入口

提示:需要 local.properties 设置代表android sdk 路径的sdk.dir属性,或者使用 ANDROID_HOME 环境变量

项目结构

1.默认目录结构:

src/main/ 放源码

src/androidTest/ 放测试代码

2.java和android plugin 共有源码目录:

java/

resources/

3.android plugin 源码目录

AndroidManifest.xml

res/

assets/

aidl/

rs/

jni/

配置路径

修改java plugin默认路径的两种方式

sourceSets {
main {
java {
srcDir 'src/java'
}
resources {
srcDir 'src/resources'
}
}
}


sourceSets {
main.java.srcDirs = ['src/java']
main.resources.srcDirs = ['src/resources']
}


将android plugin 的路径修改为旧的形式

android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

androidTest.setRoot('tests')
}
}


构建任务

常见任务

assemble 合并输出

check 运行所有检查

build 运行 assemble 和 check

clean 清空输出

这几个任务本身不做什么事,具体的事情要往里面插,类似策略模式

java任务

assemble

jar
This task creates the output.

check

test
This task runs the tests.

jar 直接或者间接依赖于其他任务,比如classes 编译java代码

具体看http://gradle.org/docs/current/userguide/java_plugin.html

android任务

assemble
The task to assemble the output(s) of the project

check
The task to run all the checks.

connectedCheck
Runs checks that requires a connected device or emulator. they will run on all connected devices in parallel.

deviceCheck
Runs checks using APIs to connect to remote devices. This is used on CI servers.

build
This task does both assemble and check

clean
This task cleans the output of the project

多了connectedCheck和deviceCheck检查设备连接

tip:gradle支持任务名简写:比如用gradle aR 代替gradle assembleRelease

自定义构建过程

Manifest entries

android {
compileSdkVersion 19
buildToolsVersion "19.0.0"

defaultConfig {
versionCode 12
versionName "2.0"
minSdkVersion 16
targetSdkVersion 16
}
}


默认值

Property NameDefault value in DSL objectDefault value
versionCode-1value from manifest if present
versionNamenullvalue from manifest if present
minSdkVersion-1value from manifest if present
targetSdkVersion-1value from manifest if present
applicationIdnullvalue from manifest if present
testApplicationIdnullapplicationId + “.test”
testInstrumentationRunnernullandroid.test.InstrumentationTestRunner
signingConfignullnull
proguardFileN/A (set only)N/A (set only)
proguardFilesN/A (set only)N/A (set only)

依赖管理

依赖于本地包

dependencies {
compile files('libs/foo.jar')
}

android {
...
}


compile的文件都会加入classpath当中,并打包到apk

可选的compile配置

compile: main application

androidTestCompile: test application

debugCompile: debug Build Type

releaseCompile: release Build Type.

依赖于远程包

repositories {
mavenCentral()
}

dependencies {
compile 'com.google.guava:guava:11.0.2'
}

android {
...
}


先把repository加进来,然后在dependencies以maven或者ivy的形式声明artifacts,就可以了

配置其他maven库

repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}


http://gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

多项目构建

示例:

MyProject/
+ app/
+ libraries/
+ lib1/
+ lib2/
app,lib1,lib2 都是gradle项目
gradle这么引用他们 :app :libraries:lib1 :libraries:lib2
每个项目都有build.gradle文件
根目录有settings.gradle
结构如下:

MyProject/
| settings.gradle
+ app/
| build.gradle
+ libraries/
+ lib1/
| build.gradle
+ lib2/
| build.gradle

为了表示当前目录是一个gradle目录,需要有settings.gradle文件,内容如下:

include ':app', ':libraries:lib1', ':libraries:lib2'


app依赖其他项目,依赖关系这么写

dependencies {
compile project(':libraries:lib1')
}


library项目

上面 :libraries:lib1 :libraries:lib2可以是java项目,:app使用它们的jar包,

但是 如果这些库要访问android api 或者其他android资源,它们不能是普通的java项目,必须是Android Library Projects

创建Android Library Projects

buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:0.5.6'
}
}

apply plugin: 'android-library'

android {
compileSdkVersion 15
}


使用android-libraray plugin 其他跟普通android项目类似

输出.aar文件,包含编译代码(.jar/.so)和资源文件(manifest, res, assets)

引用Library

dependencies {
compile project(':libraries:lib1')
compile project(':libraries:lib2')
}


发布Library

android {
defaultPublishConfig "debug"
}


默认只发布release版本,可以通过上面代码修改

如果有变体(后面将提到),要加上变体名

android {
defaultPublishConfig "flavor1Debug"
}


发布所有版本

android {
publishNonDefault true
}


引用其他发布的artifact

dependencies {
flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}


构建变体

变体:类似普通版和高级版

android {
....

productFlavors {
flavor1 {
...
}

flavor2 {
...
}
}
}


Build Type + Product Flavor = Build Variant

例如

Flavor1 - debug

Flavor1 - release

Flavor2 - debug

Flavor2 - release
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: