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 项目能够对其它组件具有依赖关系。

这些组件能够是外部的二进制包,或其它的 Gradle 项目。

二进制包的依赖

本地包

要配置一个外部库 jar 包的依赖。您须要在compile配置中加入一个依赖关系。

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的 APK。apk 总是配置两个(或以上)的配置:compile和<buildtype>Compile。

创建一个新的Build Type会基于它的名字自己主动创建一个新的配置。

这可能会实用。比方debug版本号须要使用一个自己定义库(比如报告崩溃的信息),而release版本号则不须要。或者是他们依赖于同一个库的不同版本号的情况下。

远程文件

Gradle 支持从 Maven 和 Ivy 仓库中拉取文件。

首先,这个仓库必须加入到列表其中。然后必须用Maven 或 Ivy 声明文件的方式声明这个依赖。

repositories {

mavenCentral()

}

dependencies {

compile ‘com.google.guava:guava:11.0.2‘

}

android {

...

}

注: mavenCentral()是指定maven中央仓库的URL的快捷方法。Gradle支持远程和本地仓库。

注:Gradle 将遵循全部依赖关系的传递性。这意味着,假设一个依赖有它自己的依赖关系,这些依赖也会被拉取。

有关设置依赖关系的很多其它信息。请參阅 Gradle 用户指南(这里)。和DSL文档(这里)。

多项目设置

Gradle 项目也能够通过使用多项目设置依赖于其它的 Gradle 项目。

一个多项目设置一般是通过让全部的项目作为给定根项目的子目录来实现。

比如。给定下面项目结构:

MyProject/

+ app/

+ libraries/

+ lib1/

+ lib2/

我们能够识别出3个项目。

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‘

它定义了哪个目录实际上是一个 Gradle 项目。

:app项目可能依赖于libraries,这是通过声明例如以下的依赖关系来配置的:

dependencies {

compile project(‘:libraries:lib1‘)

}

关于多项目设置的很多其它经常使用信息请參阅这里

库项目

在上面的多项目的设置中。:libraries:lib1和:libraries:lib2能够是Java项目。而:app Android项目将会使用到它们的jar包输出。

可是,假设你想共享訪问了 Andr??oid API或使用了 Android-style的资源的代码,这些库项目就不能是普通的Java项目,而应该是 Andr??oid Library 项目。

创建库项目

Library项目与普通的 Android 项目很相似,仅仅有一些不同。

因为构建库项目与构建应用程序有些不同不同,所以使用的是不同的插件。这两个插件内部共享了大部分的相同的代码,而且它们都由相同的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

}

上面的样例中创建了一个使用API?? 15编译的库项目。

SourceSets和依赖关系与它们在应用程序项目中的处理方式一样。而且支持相同方式的自己定义。

普通项目和Library 项目之间的差别

一个 Library 项目主要输出的是一个.aar包(它代表Android的归档文件)。它组合了编译代码(如一个jar文件或原生的.so文件)和资源(manifest,res,assets)。

一个库项目还能够生成測试apk。独立于应用程序測试这个库。

库项目用着相同的锚任务(assembleDebug, assembleRelease),所以构建这样一个项目的命令也没有不论什么差别。

对于其它的内容,库项目和应用程序项目的行为是一样的。

他们都有构建类型(build types)和产品定制(product flavors),而且都能够生成多个版本号的aar。

须要注意的是。Build Type的大部分配置都不适用库项目。可是。您能够依据一个库项目是否被其它项目使用还是被測试。使用自己定义 sourceSet 来更改库项目的内容。

引用一个库项目

引用一个库库和引用其它不论什么项目的方法是一样的:

dependencies {

compile project(‘:libraries:lib1‘)

compile project(‘:libraries:lib2‘)

}

注意: 假设您有多个库。那么排序将很重要。这类似于旧的生成系统中, project.properties 文件的依赖项的顺序的重要性。

库项目公布

默认情况下,一个库项目仅仅公布它的release variant。这variant将被全部引用该库的项目使用,不管那些项目构建的是哪种variant。

这是因为 Gradle 限制而有的一个暂时限制,我们正在努力消除这个问题。

您能够控制要公布哪一个variant

android {

defaultPublishConfig "debug"

}

注意。这个公布的配置名称引用的是完整的 variant 名称。releasedebug,仅仅在未定义flavor时适用。假设你想在使用flavors时更改默认的公布variant,你能够这样写:

android {

defaultPublishConfig "flavor1Debug"

}

公布一个库项目的全部variants也是能够做到的。

我们正计划在正常的项目对项目(project-to-project)的依赖(如上面的样例)时也能够这样做,但如今由于 Gradle 的限制(我们也在努力修复这些问题),还无法做到。

默认情况下没有启用公布全部variant。

要启用它们能够这样做:

android {

publishNonDefault true

}

公布多个variants意味着公布多个aar文件,而不是公布一个包括多个variants的aar文件。能意识到这一点是很重要的。每个 aar 包都是包括一个单一的variant。

公布一个variant,意识着让这个可用的 aar 作为 Gradle 项目的输出文件。

这个文件将会在公布到一个maven仓库中,或者还有一个项目创建对这个项目依赖时用到。

Gradle 有一个默认文件的概念。

它就是在编写以下的代码时用到的:

compile project(‘:libraries:lib2‘)

若要创建对一个项目的还有一个已公布的文件的依赖,您须要指定使用哪一个:

dependencies {

flavor1Compile project(path: ‘:lib1‘, configuration: ‘flavor1Release‘)

flavor2Compile project(path: ‘:lib1‘, configuration: ‘flavor2Release‘)

}

重要说明:注意已公布的配置是一个完整的variant,包含生成类型,而且须要像以上那样被引用。

重要说明:当启用非默认的公布时。Maven 公布插件将把这些额外的variant作为额外的包(按分类器分类)公布。这意味着它对公布到一个 maven 仓库并非真正的兼容。您应该仅仅向一个仓库公布一个单一的 variant,或者是,为项目之间的依赖启用全部的公布配置。

时间: 2024-10-26 04:35:52

Android官方技术文档翻译——Gradle 插件用户指南(4)的相关文章

Android官方技术文档翻译——Gradle 插件用户指南(6)

没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不好还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. 本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide. 翻译不易,转载请注明CSDN博客上的出处: http://blog.c

Android官方技术文档翻译——Gradle 插件用户指南(7)

本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide. 翻译不易,转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/42417779 前三章见<Android官方技术文档翻译--Gradle 插件用户指南(1-3)>. 第四章见&

Android官方技术文档翻译——Gradle 插件用户指南(1-3)

不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件用户指南,也就是Gradle上的Android插件的官方文档.文档非常长,加上近期激情不够,翻译得有些慢.到昨天为止,才译到第四章.今天先发前三章. 本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/

Android Gradle插件用户指南(译)

Android Gradle插件用户指南(译) 原文Gradle Plugin User Guide - Android Tools Project Site samples see bottom of New Build System 参考Gradle For Android Training Course 1 简介 这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同 1.1 新的构建系统的目标 新构建系统的目标是: 使得代码和资源的重用更加简单 使得创建同

Android官方技术文档翻译——新构建系统概述

本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. 这篇文章从去年就开始翻译的了,无奈项目较赶我翻译的速度又慢,翻译期间Google官网又对它不断更新,以致拖到了现在.这一篇文档是对Android新构建系统的概述,列出了与它相关的一些文档,以及这个新构建系统的各版本更新日志.这个新的构建系统,其实也就是这个Gradle 上的 Android 插件,如果你的An

Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本

本文译自Android官方技术文档<Migrating Gradle Projects to version 1.0.0>,原文地址:http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0. 本篇文档介绍的是低版本的Gradle项目怎么升级到1.0.0版本. 翻译不易,转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/427

Android官方技术文档翻译——IntelliJ 项目迁移

本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/new-build-system/migrating-from-intellij-projects. 上一篇介绍了如何上一篇介绍了如何把一个Eclipse上的Android项目迁移到 Android Studio,这一篇继续介绍对 IntelliJ项目的迁移. 翻译不易,转载请注明CSDN博客上的出处: http

Android官方技术文档翻译——清单合并

本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger. 翻译不易,转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/42671999 翻译工作耗时费神,如果你觉得本文翻译得还OK,请点击文末的"顶":如有错讹

Android官方技术文档翻译——开发工具的构建概述

本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Checks>这篇太长了,没译完,所以这次就发一下<Build Overview>的翻译好了. 这一篇是对Android 的开发工具进行构建的概述,比如Android Studio,Android Gradle 插件,SDK和ADT等. 翻译不易,转载请注明CSDN博客上的出处: http://bl