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和多项目设置
二进制包的依赖
本地包
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版本则不需要,或者是他们依赖于同一个库的不同版本的情况下。
远程文件
首先,这个仓库必须添加到列表当中,然后必须用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/
:app:libraries:lib1:libraries:lib2
每一个项目都有其自己的build.gradle文件,定义自己如何构建。
此外,在根路径下还将有一个叫settings.gradle的文件用于声明所有的项目。
这些文件的结构如下:
MyProject/| settings.gradle+ app/| build.gradle+ libraries/+ lib1/| build.gradle+ lib2/| build.gradle
settings.gradle的内容很简单:
include ':app', ':libraries:lib1', ':libraries:lib2'
该:app项目可能依赖于libraries,这是通过声明如下的依赖关系来配置的:
dependencies {compile project(':libraries:lib1')}
但是,如果你想共享访问了 Android API或使用了 Android-style的资源的代码,这些库项目就不能是普通的Java项目,而应该是 Android 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}
普通项目和Library 项目之间的区别
库项目用着同样的锚任务(assembleDebug, assembleRelease),所以构建这样一个项目的命令也没有任何区别。
引用一个库项目
dependencies {compile project(':libraries:lib1')compile project(':libraries:lib2')}
库项目发布
android {defaultPublishConfig "debug"}
android {defaultPublishConfig "flavor1Debug"}
发布一个库项目的所有variants也是可以做到的。我们正计划在正常的项目对项目(project-to-project)的依赖(如上面的例子)时也可以这样做,但现在因为 Gradle 的限制(我们也在努力修复这些问题),还无法做到。
android {publishNonDefault true}
compile project(':libraries:lib2')
dependencies {flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')}
重要说明:注意已发布的配置是一个完整的variant,包括生成类型,并且需要像以上那样被引用。
Android官方技术文档翻译——Gradle 插件用户指南(4)的更多相关文章
- Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...
- Android官方技术文档翻译——Gradle 插件用户指南(7)
本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...
- Android官方技术文档翻译——Gradle 插件用户指南(6)
没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...
- Android官方技术文档翻译——Gradle 插件用户指南(1-3)
不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...
- Android官方技术文档翻译——新构建系统概述
本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...
- Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本
本文译自Android官方技术文档<Migrating Gradle Projects to version 1.0.0>,原文地址:http://tools.android.com/te ...
- Android官方技术文档翻译——IntelliJ 项目迁移
本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/ne ...
- Android官方技术文档翻译——Eclilpse项目迁移
本文译自Android官方技术文档<Migrating From Eclipse Projects>,原文地址:http://tools.android.com/tech-docs/new ...
- Android官方技术文档翻译——清单合并
本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...
随机推荐
- Node.js 逐行读取
逐行读取 稳定性: 2 - 不稳定 使用 require('readline'),可以使用这个模块.逐行读取(Readline)可以逐行读取流(比如process.stdin) 一旦你开启了这个模块, ...
- Docker 编辑网络配置文件
Docker 1.2.0 开始支持在运行中的容器里编辑 /etc/hosts, /etc/hostname 和 /etc/resolve.conf 文件. 但是这些修改是临时的,只在运行的容器中保留, ...
- IntelliJ IDEA下Git的配置与使用(命令行下)
1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...
- Bootstrap3 排版-改变大小写
通过这几个类可以改变文本的大小写. <p class="text-lowercase">Lowercased text.</p> <p class=& ...
- 如何使用Matlab产生对称矩阵
有时候做实验需要使用对称矩阵,这里介绍如何使用Matlab产生随机的对称矩阵. 用例子说明一下:我要产生4X4的随机矩阵,要求是对称矩阵. 产生对称矩阵 A = rand(4); B = tril(A ...
- CCSpriteBatchNode中存放元素的一点理解
该对象只能包含基于CCSprite的对象,并且该要求适用于一切子孙对象.即加入CCSpriteBatchNode的任何对象都必须是CCSprite或其子类. 比如CCSpriteBatchNode包含 ...
- Android App之间通过Intent交互
Android 最重要的功能之一是应用能够基于它要执行的"操作"向另一个应用发送用户. 例如,如果您的应用有您要在地图上显示的公司地址,您无需在显示地图的应用中构建 Activit ...
- androidApp的完全退出
思路:搜集整个工程所有的activity,通过循环把工程中所有的activity都关闭. 搜集工程中的activity,可以由单例模式实现, [java] view plaincopy import ...
- 使用IDEA运行Spark程序
使用IDEA运行Spark程序 1.安装IDEA 从IDEA官网下载Community版本,解压到/usr/local/idea目录下. tar –xzf ideaIC-13.1.4b.tar.gz ...
- Github上怎么修改别人的项目并且提交给原作者!图文并茂!
Github上怎么修改别人的项目并且提交给原作者!图文并茂! 写这篇博客的初衷,是因为我的项目Only需要一些朋友一起参与进来,但是很多的Git都不是很熟练,其实版本控制这种东西没有什么难度的,只要稍 ...