Androidstudio 打包aar 無法引用類庫中 dependencies 遠端依賴
在網上看到一些Androidstudio 打包生成aar的方法:
1.介面操作
2.命令列操作
gradle clean build
以上兩種方法,前提Module是Library,呼叫系統build重新構建工程,完成後會在Module 模組下build---->outputs 目錄中輸出aar 類庫檔案.
但是對於aar類庫中包含dependencies 遠端依賴的情況下,會出現無法呼叫類庫的中依賴工程
例:aar類庫中包含遠端依賴volley, 此時按照如上方法打包出的aar,在目標工程中是無法呼叫volley使用的
compile 'com.mcxiaoke.volley:library:1.0.19'
解決方案:
1.建立本地Maven 倉庫,並生成可用aar 類庫
在Library工程中build.gradle 檔案中新增如下程式碼,使用命令列在Library目錄下執行 gradle uploadArchives
確保環境變數ANDROID_HOME可用,此處可以使用絕對路徑
version 是 Library 版本
groupId 是 Library 包名
artifactId 是 Library 名稱
apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/" + System.getenv("ANDROID_HOME") + "/extras/android/m2repository/") pom.version = '1.0-SNAPSHOT' pom.groupId = 'your.package' pom.artifactId = 'sdk-name' } } }
完成後,會在如上指定目錄URL(/extras/android/m2repository/...) 中生成如下檔案
此時的sdk-name-1.0-20160129.070749-1.aar 就是我們需要的aar 類庫.
2.建立遠端Maven倉庫,生成aar類庫 @TODO
建立Maven遠端倉庫方法省略
使用方法與本地倉庫雷同,需要注意事項:
(1)uploadArchives 方法中 定義地址為網路server地址,需要授權
name = 'mavenCentralReleaseDeployer'
repository(url: "http://xxx"){
authentication(userName:"",password:"")
}(2)dependencies 方法中使用compile 引用類庫之前,強制定向網路server地址
repositories { maven {url "http://xxx"} }
使用aar 類庫方法
1. libs資料夾下引用方法
2.Maven倉庫的引用方法(本地倉庫與遠端倉庫方法一致)
格式 :pom.groupId : pom.artifactId : pom.version @aar
示例 :
compile 'your.package:sdk-name:1[email protected]'
androidstudio 打包jar類庫
在build.gradle 檔案中新增如下程式碼,在工程目錄下執行 gradle buildLib, 之後xxx.jar會在Module 根目錄中生成
//定義一個函式,target是生成jar包的檔名,classDir是class檔案所在的資料夾 def makeJar(String target,String classDir){ exec{ executable "jar" //呼叫jar args "cvf",target args "-C", classDir args "","." } } //新建一個task,名為buildLib,依賴build(build是一個自帶的task) task buildLib(dependsOn:['build'])<< { makeJar("xxx.jar","build/intermediates/classes/release") }