Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 用Gradle構建android程序之依賴管理篇

用Gradle構建android程序之依賴管理篇

編輯:Android開發實例

續上一篇《用Gradle 構建android程序之入門篇 》,這次把上次沒寫的關於,如何用gralde 構建帶有依賴的項目補全吧。

個人感覺還是說說,目前android gradle 插件的現況,如無意外應該是最新的。

目前最新的官方gradle android 是0.4,除了android 官方的gralde的插件,也有一些開發者很早以前開發的gradle 插件,不過現在基本不維護了,所以這裡不對這些第三方的gradle插件進行介紹。

android Gradle 0.4 插件maven中央庫,目前新的android gradle 構建系統基本完善,現在已知的問題有

  1. 不支持android library 與 android library 的互相引用。
  2. 不支持 NDK
  3. 不支持android library 打包文件(*.aar) 的本地引用

如果,以上問題的你都碰到不到的話,從現在開始,用gradle來構建android程序是一個不錯的選擇。

這裡閱讀的前提是你已經把上一篇已經看過。

gradle 作為構建工具,能夠很方便的使用本地jar包,以下為使用的代碼塊。

  1. dependencies {  
  2.     //單文件依賴  
  3.     compile files('libs/android-support-v4.jar')  
  4.     //某個文件夾下面全部依賴  
  5.     compile fileTree(dir: 'libs', include: '*.jar')  
  6. }  
  7.  
  8. android {  
  9.       

gradle 同時支持maven,ivy,由於ivy我沒用過,所以用maven 作為例子,以下為代碼塊:

  1. repositories {  
  2.     //從中央庫裡面獲取依賴  
  3.     mavenCentral()  
  4.     //或者使用指定的本地maven 庫  
  5.     maven{  
  6.         url "file://F:/githubrepo/releases"  
  7.     }  
  8.     //或者使用指定的遠程maven庫  
  9.     maven{  
  10.         url "https://github.com/youxiachai/youxiachai-mvn-repo/raw/master/releases"  
  11.     }  
  12. }  
  13.  
  14. dependencies {  
  15.     //應用格式: packageName:artifactId:version  
  16.     compile 'com.google.android:support-v4:r13'  
  17. }  
  18.  
  19. android {  
  20.  

對於項目依賴 android library的話,就不是依賴一個jar,那麼簡單了,在這裡需要使用gradle mulit project 機制。例子的話,我就不重復寫了,具體參考上一篇提到的德國人寫的例子。記得把插件版本改為 0.4 https://github.com/Goddchen/Android-Gradle-Examples/tree/master/Gradle%20Library%20Projects

注意對於android library build.gradle 記得要把

apply plugin: 'android' 改為 apply plugin: 'android-library'

Mulit project 設置

Mulit project 設置是gradle 約定的一種格式,如果你需要編譯某個項目之前,要先編譯另外一個項目的時候,就需要用到,結構如下圖(來自於官方文檔):

MyProject/ | settings.gradle + app/ | build.gradle + libraries/ + lib1/ | build.gradle + lib2/ | build.gradle

你需要在你的workplace 目錄下面創建settings.gradle 的文件,然後在裡面寫上:

include ':app', ':libraries:lib1', ':libraries:lib2'

那樣,gradle mutil project 就設置完畢。

對於app project 如果需要應用libraries 目錄下的 lib1 ,你只需要在app project build.gradle 裡面的依賴中這麼寫:

  1. compile project(':libraries:lib1')  
  2.  
  3.  

即可完成,寫完以後可以用gradle AndroidDependencies 來檢查依賴狀況。

  1. buildscript {  
  2.     repositories {  
  3.         mavenCentral()  
  4.     }  
  5.       
  6.     dependencies {  
  7.         classpath 'com.android.tools.build:gradle:0.4'  
  8.     }  

對於buildscript{} 在android gradle是用來預置插件環境,一般不建議把依賴寫著裡面,推薦的依賴寫法是:

  1. buildscript {  
  2.     repositories {  
  3.         mavenCentral()  
  4.     }  
  5.       
  6.     dependencies {  
  7.         classpath 'com.android.tools.build:gradle:0.4'  
  8.     }  
  9. }  
  10.  
  11. repositories {  
  12.     //從中央庫裡面獲取依賴  
  13.     mavenCentral()  
  14.     //或者使用指定的本地maven 庫  
  15.     maven{  
  16.         url "file://F:/githubrepo/releases"  
  17.     }  
  18. }  
  19.  
  20. dependencies {  
  21.     //應用格式: packageName:artifactId:version  
  22.     compile 'com.google.android:support-v4:r13'  

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的打包格式,擴展名為*.aar。前面提到,目前android gradle插件並不支持本地直接使用*.aar文件,不過,支持包管理庫的引用方式,下面,我為大家說一下,怎麼對android library 發布使用。

  1. 打包android library

    對android library 進行打包直接在library項目下面使用gradle build 即可,然後,你就會在 build/libs 目錄下看到兩個*.aar文件,一個debug包用的,一個是release 下用的,看個人需求使用,這裡我們用的是release 版本的 .aar 文件。

  2. 發布腳本

    android library project 目錄的 build/libs 下創建一個build.gradle 文件

  1. apply plugin: 'maven'  
  2.  
  3. group = 'com.youxiachai' 
  4.  
  5. artifacts {  
  6.     //當前aar 文件名  
  7.     archives file('Gradlelib.aar')  
  8. }  
  9.  
  10. uploadArchives {  
  11.       repositories {  
  12.         mavenDeployer {  
  13.             repository(url: "file://F:/githubrepo/releases")  
  14.             pom.version  = 'r1' 
  15.             pom.artifactId = 'gradletest' 
  16.         }  
  17.     }  

gradle uploadArchives即可完成包的發布。

完成以上兩步就可以直接用maven 引用jar的依賴那樣,引用android library 的依賴。

Google I/O 2013 上面介紹的android Gralde build System‎ (已經轉載到優酷)

Xavier Ducrohet Android SDK Tech Lead,上面那個視頻就是這個人演講的。

adt-dev社區 因為用gradle 構建android 是新系統,一般而言有問題是搜索不到的,有問題還是上社區直接問吧,一般Xavier Ducrohet 都會幫你解決。

 

轉自:http://www.cnblogs.com/youxilua/archive/2013/05/22/3092657.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved