用Gradle 構建你的android程式-依賴管理篇
前言
續上一篇《用Gradle 構建你的android程式》,這次把上次沒寫的關於,如何用gralde 構建帶有依賴的專案補全吧。
Gradle android 外掛現況
個人感覺還是說說,目前android gradle 外掛的現況,如無意外應該是最新的。
目前最新的官方gradle android 是0.4,除了android 官方的gralde的外掛,也有一些開發者很早以前開發的gradle 外掛,不過現在基本不維護了,所以這裡不對這些第三方的gradle外掛進行介紹。
android Gradle 0.4 外掛maven中央庫,目前新的android gradle 構建系統基本完善,現在已知的問題有
- 不支援android library 與 android library 的互相引用。
- 不支援 NDK
- 不支援android library 打包檔案(*.aar) 的本地引用
如果,以上問題的你都碰到不到的話,從現在開始,用gradle來構建android程式是一個不錯的選擇。
引用依賴
這裡閱讀的前提是你已經把上一篇已經看過。
本地依賴
gradle 作為構建工具,能夠很方便的使用本地jar包,以下為使用的程式碼塊。
1 2 3 4 5 6 7 8 9 10 |
dependencies { //單檔案依賴 compile files('libs/android-support-v4.jar') //某個資料夾下面全部依賴 compile fileTree(dir: 'libs', include: '*.jar') } android { } |
遠端依賴
gradle 同時支援maven,ivy,由於ivy我沒用過,所以用maven 作為例子,以下為程式碼塊:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
repositories { //從中央庫裡面獲取依賴 mavenCentral() //或者使用指定的本地maven 庫 maven{ url "file://F:/githubrepo/releases" } //或者使用指定的遠端maven庫 maven{ url "https://github.com/youxiachai/youxiachai-mvn-repo/raw/master/releases" } } dependencies { //應用格式: packageName:artifactId:version compile 'com.google.android:support-v4:r13' } android { } |
android library 依賴
對於專案依賴 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') |
即可完成,寫完以後可以用gradle AndroidDependencies
來檢查依賴狀況。
需要注意的地方
1 2 3 4 5 6 7 8 9 |
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } |
對於buildscript{}
在android gradle是用來預置外掛環境,一般不建議把依賴寫著裡面,推薦的依賴寫法是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } repositories { //從中央庫裡面獲取依賴 mavenCentral() //或者使用指定的本地maven 庫 maven{ url "file://F:/githubrepo/releases" } } dependencies { //應用格式: packageName:artifactId:version compile 'com.google.android:support-v4:r13' } |
使用Maven 管理庫
gradle 對於包的管理,支援filesystem,maven,ivy,這裡我重點說說如何利用maven 進行android 依賴包的管理
利用Gradle 釋出本地maven 庫
對於如何打包一個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 釋出使用。
-
打包android library
對android library 進行打包直接在library專案下面使用
gradle build
即可,然後,你就會在 build/libs 目錄下看到兩個*.aar
檔案,一個debug包用的,一個是release 下用的,看個人需求使用,這裡我們用的是release 版本的 .aar 檔案。 -
釋出指令碼
android library project 目錄的 build/libs 下建立一個build.gradle 檔案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
apply plugin: 'maven' group = 'com.youxiachai' artifacts { //當前aar 檔名 archives file('Gradlelib.aar') } uploadArchives { repositories { mavenDeployer { repository(url: "file://F:/githubrepo/releases") pom.version = 'r1' pom.artifactId = 'gradletest' } } }
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 都會幫你解決。
相關文章
- Gradle for Android 第三篇( 依賴管理 )GradleAndroid
- 用Gradle 構建你的android程式GradleAndroid
- Gradle For Android (一) 基礎定義與依賴管理篇GradleAndroid
- Gradle for Android系列之四 依賴包管理GradleAndroid
- Android Gradle 依賴配置:implementation & apiAndroidGradleAPI
- Gradle入門系列(3):依賴管理Gradle
- 將你的Gradle依賴轉換為函式Gradle函式
- 清除gradle依賴jarGradleJAR
- gradle構建springboot專案瘦身,外部依賴jar的終極方法GradleSpring BootJAR
- [譯] 用依賴注入解耦你的程式碼依賴注入解耦
- Android 依賴管理簡介Android
- 【Java】【專案構建】Idea中設定Gradle/Maven多模組依賴JavaIdeaGradleMaven
- ofbiz16中gradle構建依賴jcenter下載太慢的解決方案Gradle
- Gradle for Android 第五篇( 多模組構建 )GradleAndroid
- Maven依賴管理:控制依賴的傳遞Maven
- Android -Gradle依賴匯入及相關知識AndroidGradle
- Android Gradle Groovy自動化構建進階篇AndroidGradle
- 依賴管理和依賴範圍
- idea gradle 專案依賴IdeaGradle
- Gradle排除依賴模組的某個類Gradle
- 使用Gradle構建Android應用內測版本GradleAndroid
- 如何在Android Gradle中新增原生so檔案依賴AndroidGradle
- Gradle for Android ( 構建變體 )GradleAndroid
- [Android、Java]加快gradle構建AndroidJavaGradle
- 使用Gradle檢視Android專案中庫的依賴關係GradleAndroid
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- golang 依賴管理Golang
- 讓Gradle放飛你的apk構建GradleAPK
- 如何對 Android 庫進行依賴管理?Android
- Flutter 中的依賴管理Flutter
- Gradle根據引數配置不同的依賴Gradle
- Android 應用構建速度提升Gradle配置優化AndroidGradle優化
- CMake構建學習筆記14-依賴庫管理工具筆記
- 解決Android studio中gradle依賴下載太慢的問題AndroidGradle
- 使用新 Android Gradle 外掛加速您的應用構建AndroidGradle
- 前端彙總系列:npm依賴(構建編譯)前端NPM編譯
- 一文徹底搞清 Gradle 依賴Gradle
- govendor依賴包管理Go