1. 程式人生 > >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

翻譯工作耗時費神,如果你覺得本文翻譯得還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的內容很簡單:
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,或者是,為專案之間的依賴啟用所有的釋出配置。

相關推薦

Android官方技術翻譯——Gradle 外掛使用者指南4

最近趕專案,白天基本沒時間,只有晚上在家的時候才能看一看。昨天晚上只翻譯完了第四章,今天就只發第四章吧。 本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-doc

Android官方技術翻譯——Gradle 外掛使用者指南7

本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。 翻譯不易,轉載請註明CSDN部落格上的出處:

Android官方技術翻譯——Gradle 外掛使用者指南5

昨晚把第五章未譯完的幾句話解決了,不過第六章沒怎麼譯,明後天又是週末,如果週一前第六章翻譯完的話,週一再發第六章。 本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/te

Android官方技術翻譯——Gradle 外掛使用者指南1-3

不知道是什麼網路問題,上午一直髮不了部落格,其他頁面基本正常,就是在寫部落格這裡,每次開啟都是響應超時。剛才用了VPN,順便試了一下,居然可以編輯。想是CDN之類的問題吧。 這次翻譯的是Gradle 外掛使用者指南,也就是Gradle上的Android外掛的官方文件。文件很

Android官方技術翻譯——Gradle 外掛使用者指南

本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。 翻譯不易,轉載請註明CSDN部落格上的出處: http://blog.cs

Android官方技術翻譯——Gradle用戶指南4

庫項目 包含 doc 努力 時也 外部 插件 http name 近期趕項目,白天基本沒時間,僅僅有晚上在家的時候才幹看一看。昨天晚上僅僅翻譯完了第四章,今天就僅僅發第四章吧。 本文譯自Android官方技術文檔《Gradle Plugin User Guide》,

Android官方技術翻譯——清單合併

本文譯自Android官方技術文件《Manifest Merger》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger。 翻譯不易,轉載請註明CSDN部落格上的出處: htt

android官方技術翻譯——switch 語句轉換

自ADT 14起,庫專案的資源常量不再是final型的。這一點在此文件中有更詳細的說明。 然而,這樣導致的後果之一是,一些已有的老專案,當使用ADT 14後將不再通過編譯。其中的原因可能較難理解。有一個新的 quickfix 檢測器就是為了解決這個問題,它可以尋找一個特定的編譯錯誤,並在存在這樣的錯誤時增加

Android官方技術翻譯——IntelliJ 專案遷移

本文譯自Android官方技術文件《Migrating from IntelliJ Projects》,原文地址:http://tools.android.com/tech-docs/new-build-system/migrating-from-intellij-pro

android官方技術翻譯——Android Lint

$ lint /src/astrid/Scanning GreenDroid-GoogleAPIs: ..Scanning stream: ...Scanning api: ...........................Scanning GDCatalog: ....................

android官方技術翻譯——工具屬性

本文譯自androd官方技術文件《Tools Attributes》:http://tools.android.com/tech-docs/tools-attributes 本文地址:http://blog.csdn.net/maosidiaoxian/article/de

Android官方技術翻譯——開發工具的構建概述

本文譯自Android官方技術文件《Build Overview》,原文地址:http://tools.android.com/build。 因為《Android Lint Checks》這篇太長了,沒譯完,所以這次就發一下《Build Overview》的翻譯好了。 這

android官方技術翻譯——設計時佈局屬性

在 Android Studio 0.2.11 版本中,佈局渲染(用於佈局編輯器以及XML編輯器的佈局預覽視窗),支援 設計時佈局屬性. 這些屬性用於佈局在工具裡渲染時期,但是對執行時沒有任何影響。這一點很有用,比如如果你想在編輯佈局的時候把 示例資料資料放到文字框中,但又不想這些屬性影響到你的應用的

android官方技術翻譯——Case 標籤中的常量欄位

public static final int main=0x7f030004; 然而,到 ADT 14為止,在類庫專案中,他們會被這樣宣告: public static int main=0x7f030004; 換句話說,在庫專案中這些常量都不是final的。原因很簡單:當多個庫專案整合時,欄位的實際值

Spark2.1.0:Spark Streaming 程式設計指南

本文翻譯自spark官方文件,僅翻譯了Scala API部分,目前版本為2.1.0,如有疏漏錯誤之處請多多指教。 原文地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html 因文件篇幅較

【Unity3D技術翻譯】第1.6篇 使用 AssetBundle Manager

上一章:【Unity3D技術文件翻譯】第1.5篇 使用 AssetBundles 本章原文所在章節:【Unity Manual】→【Working in Unity】→【Advanced Development】→【AssetBundles】→【AssetBundle Manager】 As

Log4j2官方架構翻譯

官網原文標題《Architecture》 翻譯時間:2017-11-14 譯者:本文介紹了log4j的主要構成元件和核心概念,並就每個元件分別進行了講解。尤其需要讀者重點理解的是log level的繼承概念,以及appender的additivity屬性。仔細理解本片

教大家看官方技術- Spring MVC

每當學習一門新技術時候,大部分人直接就是百度Bing搜尋,借鑑別人的部落格例子等。我也是一樣,但是我經常想,這些牛人的例子如何寫出來的,如何深入擴充套件其它功能等等。所以,我會做多一步,就是挖掘官方文件。 本文例子的軟體環境: IntelliJ

[原][譯]JSBSim官方原始碼翻譯google翻譯

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pyspark 官方介面翻譯

由於網上關於Pyspark的資料太過於零散,官方文件也沒有中文版,所以只能自己嘗試來翻譯,第一次翻譯文件,肯定會有很多謬誤,希望大家能多評論指正,共同學習spark! 核心內容:     SparkContext:              Spark功能主要介面