最近趕項目,白天基本沒時間,只有晚上在家的時候才能看一看。昨天晚上只翻譯完了第四章,今天就只發第四章吧。
本文譯自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,請點一下“頂”,我在精神上會倍受鼓勵的,謝謝。翻譯如有錯訛,敬請指正。
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/
: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}
庫項目用着同樣的錨任務(assembleDebug, assembleRelease),所以構建這樣一個項目的命令也沒有任何區別。
引用一個庫項目
dependencies {compile project(':libraries:lib1')compile project(':libraries:lib2')}
android {defaultPublishConfig "debug"}
android {defaultPublishConfig "flavor1Debug"}
android {publishNonDefault true}
compile project(':libraries:lib2')
dependencies {flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')}