近期趕項目,白天基本沒時間,僅僅有晚上在家的時候才幹看一看。昨天晚上僅僅翻譯完了第四章,今天就僅僅發第四章吧。html
本文譯自Android官方技術文檔《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。android
翻譯不易。轉載請註明CSDN博客上的出處:api
http://blog.csdn.net/maosidiaoxian/article/details/41955809
app
前三章見《Android官方技術文檔翻譯——Gradle 插件用戶指南(1-3)》。maven
翻譯工做耗時費神,假設你認爲本文翻譯得還OK。請點一下「頂」。我在精神上會倍受鼓舞的,謝謝。翻譯若有錯訛,敬請指正。ide
dependencies {compile files('libs/foo.jar')}
android {...}
compile配置用於編譯主應用程序。裏面的所有內容都會被加入到編譯類路徑,並且打包到終於生成的 apk 其中。
如下是加入依賴時其它可能用到的配置:
gradle
建立一個新的Build Type會基於它的名字本身主動建立一個新的配置。ui
這可能會實用。比方debug版本號需要使用一個本身定義庫(好比報告崩潰的信息),而release版本號則不需要。或者是他們依賴於同一個庫的不一樣版本號的狀況下。
google
首先,這個倉庫必須加入到列表其中。而後必須用Maven 或 Ivy 聲明文件的方式聲明這個依賴。
repositories {mavenCentral()}
dependencies {compile 'com.google.guava:guava:11.0.2'}
android {...}
注:Gradle 將遵循所有依賴關係的傳遞性。這意味着,假設一個依賴有它本身的依賴關係,這些依賴也會被拉取。
有關設置依賴關係的不少其它信息。請參閱 Gradle 用戶指南(這裏)。和DSL文檔(這裏)。
一個多項目設置通常是經過讓所有的項目做爲給定根項目的子目錄來實現。
好比。給定下面項目結構:
MyProject/+ app/+ libraries/+ lib1/+ lib2/
Gradle 將經過下面名稱引用它們:
:app:libraries:lib1:libraries:lib2
此外,在根路徑下還將有一個叫settings.gradle的文件用於聲明所有的項目。
這些文件的結構例如如下:
MyProject/| settings.gradle+ app/| build.gradle+ libraries/+ lib1/| build.gradle+ lib2/| build.gradle
include ':app', ':libraries:lib1', ':libraries:lib2'
dependencies {compile project(':libraries:lib1')}
buildscript {repositories {mavenCentral()}
dependencies {classpath 'com.android.tools.build:gradle:0.5.6'}}
apply plugin: 'android-library'
android {compileSdkVersion 15}
。
他們都有構建類型(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')}