1. 程式人生 > >Androidstudio 打包aar 無法引用類庫中 dependencies 遠端依賴

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包的檔名,classDirclass檔案所在的資料夾
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")
}