續上一篇《用Gradle 建構你的android程式》,這次把上次沒寫的關于,如何用gralde 建構帶有依賴的項目補全吧。
<a></a>
個人感覺還是說說,目前android gradle 插件的現況,如無意外應該是最新的。
目前最新的官方gradle android 是0.4,除了android 官方的gralde的插件,也有一些開發者很早以前開發的gradle 插件,不過現在基本不維護了,是以這裡不對這些第三方的gradle插件進行介紹。
不支援 NDK
不支援android library 打封包件(*.aar) 的本地引用
如果,以上問題的你都碰到不到的話,從現在開始,用gradle來建構android程式是一個不錯的選擇。
這裡閱讀的前提是你已經把上一篇已經看過。
gradle 作為建構工具,能夠很友善的使用本地jar包,以下為使用的代碼塊。
1
2
3
4
5
6
7
8
9
<code>dependencies {</code>
<code> </code><code>//單檔案依賴</code>
<code> </code><code>compile files(</code><code>'libs/android-support-v4.jar'</code><code>)</code>
<code> </code><code>//某個檔案夾下面全部依賴</code>
<code> </code><code>compile fileTree(dir: </code><code>'libs'</code><code>, include: </code><code>'*.jar'</code><code>)</code>
<code>}</code>
<code>android {</code>
<code> </code>
gradle 同時支援maven,ivy,由于ivy我沒用過,是以用maven 作為例子,以下為代碼塊:
10
11
12
13
14
15
16
17
18
<code>repositories {</code>
<code> </code><code>//從中央庫裡面擷取依賴</code>
<code> </code><code>mavenCentral()</code>
<code> </code><code>//或者使用指定的本地maven 庫</code>
<code> </code><code>maven{</code>
<code> </code><code>url </code><code>"file://F:/githubrepo/releases"</code>
<code> </code><code>}</code>
<code> </code><code>//或者使用指定的遠端maven庫</code>
<code> </code><code>url </code><code>"https://github.com/youxiachai/youxiachai-mvn-repo/raw/master/releases"</code>
<code> </code><code>//應用格式: packageName:artifactId:version</code>
<code> </code><code>compile </code><code>'com.google.android:support-v4:r13'</code>
注意對于android library <code>build.gradle</code> 記得要把
apply plugin: 'android' 改為 apply plugin: 'android-library'
Mulit project 設定是gradle 約定的一種格式,如果你需要編譯某個項目之前,要先編譯另外一個項目的時候,就需要用到,結構如下圖(來自于官方文檔):
MyProject/ | settings.gradle + app/ | build.gradle + libraries/ + lib1/ | build.gradle + lib2/
你需要在你的workplace 目錄下面建立settings.gradle 的檔案,然後在裡面寫上:
include ':app', ':libraries:lib1', ':libraries:lib2'
那樣,gradle mutil project 就設定完畢。
對于app project 如果需要應用libraries 目錄下的 lib1 ,你隻需要在app project <code>build.gradle</code> 裡面的依賴中這麼寫:
<code>compile project(</code><code>':libraries:lib1'</code><code>)</code>
即可完成,寫完以後可以用<code>gradle AndroidDependencies</code> 來檢查依賴狀況。
<code>buildscript {</code>
<code> </code><code>repositories {</code>
<code> </code><code>mavenCentral()</code>
<code> </code>
<code> </code><code>dependencies {</code>
<code> </code><code>classpath </code><code>'com.android.tools.build:gradle:0.4'</code>
對于<code>buildscript{}</code> 在android gradle是用來預置插件環境,一般不建議把依賴寫着裡面,推薦的依賴寫法是:
19
20
<code> </code>
gradle 對于包的管理,支援filesystem,maven,ivy,這裡我重點說說如何利用maven 進行android 依賴包的管理
對于如何打包一個jar 包并且釋出到maven,這是java 的基本知識,這裡就不說了。
我們現在要學習的是,例如釋出一個android library 包。
在過去,android library并沒有一個很好的包管理方式,簡單來說,在gradle出現以前,官方并沒有一種用于管理android library 依賴包的方式,一般我們都是直接下載下傳别人的android library project 源碼進行內建,而對于第三方的android-maven-plugin 用的是apklib 格式。
而現在,官方終于推出一種android library的打包格式,擴充名為<code>*.aar</code>。前面提到,目前android gradle插件并不支援本地直接使用<code>*.aar</code>檔案,不過,支援包管理庫的引用方式,下面,我為大家說一下,怎麼對android library 釋出使用。
打包android library
對android library 進行打包直接在library項目下面使用<code>gradle build</code> 即可,然後,你就會在 build/libs 目錄下看到兩個<code>*.aar</code>檔案,一個debug包用的,一個是release 下用的,看個人需求使用,這裡我們用的是release 版本的 .aar 檔案。
釋出腳本
android library project 目錄的 build/libs 下建立一個build.gradle 檔案 <code>apply plugin: </code><code>'maven'</code> <code>group = </code><code>'com.youxiachai'</code> <code>artifacts {</code> <code> </code><code>//目前aar 檔案名</code> <code> </code><code>archives file(</code><code>'Gradlelib.aar'</code><code>)</code> <code>uploadArchives {</code> <code> </code><code>repositories {</code> <code> </code><code>mavenDeployer {</code> <code> </code><code>repository(url: </code><code>"file://F:/githubrepo/releases"</code><code>)</code> <code> </code><code>pom.version = </code><code>'r1'</code> <code> </code><code>pom.artifactId = </code><code>'gradletest'</code> <code> </code><code>}</code>
<code>gradle uploadArchives</code>即可完成包的釋出。
完成以上兩步就可以直接用maven 引用jar的依賴那樣,引用android library 的依賴。
<a href="http://v.youku.com/v_show/id_XNTYwMzY0NDYw.html">Google I/O 2013 上面介紹的android Gralde build System? (已經轉載到優酷)</a>
本文轉自youxiachai 部落格,原文連結:http://blog.51cto.com/youxilua/1206687 如需轉載請自行聯系原作者