首页 > 代码库 > Android官方技术文档翻译——Gradle 插件用户指南(4)
Android官方技术文档翻译——Gradle 插件用户指南(4)
近期赶项目,白天基本没时间,仅仅有晚上在家的时候才干看一看。昨天晚上仅仅翻译完了第四章,今天就仅仅发第四章吧。
本文译自Android官方技术文档《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻译不易。转载请注明CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/41955809
前三章见《Android官方技术文档翻译——Gradle 插件用户指南(1-3)》。
翻译工作耗时费神,假设你认为本文翻译得还OK。请点一下“顶”。我在精神上会倍受鼓舞的,谢谢。翻译如有错讹,敬请指正。
依赖、 Android Library和多项目设置
这些组件能够是外部的二进制包,或其它的 Gradle 项目。
二进制包的依赖
本地包
dependencies {compile files(‘libs/foo.jar‘)}
android {...}
注意:dependencies DSL 元素是标准的 Gradle API 的一部分。不属于android 元素内。
compile配置用于编译主应用程序。里面的全部内容都会被加入到编译类路径,而且打包到终于生成的 apk 其中。
以下是加入依赖时其它可能用到的配置:
- compile: 主应用程序
- androidTestCompile: 測试的应用程序
- debugCompile: debug Build Type
- releaseCompile: release Build Type.
创建一个新的Build Type会基于它的名字自己主动创建一个新的配置。
这可能会实用。比方debug版本号须要使用一个自己定义库(比如报告崩溃的信息),而release版本号则不须要。或者是他们依赖于同一个库的不同版本号的情况下。
远程文件
首先,这个仓库必须加入到列表其中。然后必须用Maven 或 Ivy 声明文件的方式声明这个依赖。
repositories {mavenCentral()}
dependencies {compile ‘com.google.guava:guava:11.0.2‘}
android {...}
注: mavenCentral()是指定maven中央仓库的URL的快捷方法。Gradle支持远程和本地仓库。
注:Gradle 将遵循全部依赖关系的传递性。这意味着,假设一个依赖有它自己的依赖关系,这些依赖也会被拉取。
有关设置依赖关系的很多其它信息。请參阅 Gradle 用户指南(这里)。和DSL文档(这里)。
多项目设置
一个多项目设置一般是通过让全部的项目作为给定根项目的子目录来实现。
比如。给定下面项目结构:
MyProject/+ app/+ libraries/+ lib1/+ lib2/
Gradle 将通过下面名称引用它们:
:app:libraries:lib1:libraries:lib2
每个项目都有其自己的build.gradle文件,定义自己怎样构建。
此外,在根路径下还将有一个叫settings.gradle的文件用于声明全部的项目。
这些文件的结构例如以下:
MyProject/| settings.gradle+ app/| build.gradle+ libraries/+ lib1/| build.gradle+ lib2/| build.gradle
settings.gradle的内容非常easy:
include ‘:app‘, ‘:libraries:lib1‘, ‘:libraries:lib2‘
该:app项目可能依赖于libraries,这是通过声明例如以下的依赖关系来配置的:
dependencies {compile project(‘:libraries:lib1‘)}
关于多项目设置的很多其它经常使用信息请參阅这里。
库项目
可是,假设你想共享訪问了 Andr??oid API或使用了 Android-style的资源的代码,这些库项目就不能是普通的Java项目,而应该是 Andr??oid Library 项目。
创建库项目
因为构建库项目与构建应用程序有些不同不同,所以使用的是不同的插件。这两个插件内部共享了大部分的相同的代码,而且它们都由相同的com.android.tools.build.gradle jar 包提供。
buildscript {repositories {mavenCentral()}
dependencies {classpath ‘com.android.tools.build:gradle:0.5.6‘}}
apply plugin: ‘android-library‘
android {compileSdkVersion 15}
SourceSets和依赖关系与它们在应用程序项目中的处理方式一样。而且支持相同方式的自己定义。
普通项目和Library 项目之间的差别
库项目用着相同的锚任务(assembleDebug, assembleRelease),所以构建这样一个项目的命令也没有不论什么差别。
。
他们都有构建类型(build types)和产品定制(product flavors),而且都能够生成多个版本号的aar。
引用一个库项目
dependencies {compile project(‘:libraries:lib1‘)compile project(‘:libraries:lib2‘)}
库项目公布
这是因为 Gradle 限制而有的一个暂时限制,我们正在努力消除这个问题。
android {defaultPublishConfig "debug"}
android {defaultPublishConfig "flavor1Debug"}
我们正计划在正常的项目对项目(project-to-project)的依赖(如上面的样例)时也能够这样做,但如今由于 Gradle 的限制(我们也在努力修复这些问题),还无法做到。
要启用它们能够这样做:
android {publishNonDefault true}
这个文件将会在公布到一个maven仓库中,或者还有一个项目创建对这个项目依赖时用到。
它就是在编写以下的代码时用到的:
compile project(‘:libraries:lib2‘)
dependencies {flavor1Compile project(path: ‘:lib1‘, configuration: ‘flavor1Release‘)flavor2Compile project(path: ‘:lib1‘, configuration: ‘flavor2Release‘)}
Android官方技术文档翻译——Gradle 插件用户指南(4)