在網上看到一些Androidstudio 打包生成aar的方法:
- 界面操作
- 命令行操作
gradle clean build
以上兩種方法,前提Module是Library,調用系統build重新構建工程,完成後會在Module 模塊下build---->outputs 目錄中輸出aar 類庫文件.
但是對於aar類庫中包含dependencies 遠程依賴的情況下,會出現無法調用類庫的中依賴工程
例:aar類庫中包含遠程依賴volley, 此時按照如上方法打包出的aar,在目標工程中是無法調用volley使用的
compile 'com.mcxiaoke.volley:library:1.0.19'
解決方案:
- 創建本地Maven 倉庫,並生成可用aar 類庫
在Library工程中build.gradle 文件中添加如下代碼,使用命令行執行 gradle uploadArchives
repository url 路徑可自定義
version 是 Library 版本
artifactId 是 Library 名稱
groupId 是 Library 包名
packaging 類庫類型
description 描述
apply plugin: 'maven'
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: "file://localhost/"+"Users/kevinbai/Desktop")
pom.project {
version '1.0.0'
artifactId 'mcdnb'
groupId 'com.payment.nb'
packaging 'aar'
description 'mcdnb'
}
}
}
}
完成後,會在如上指定目錄URL(Users/kevinbai/Desktop) 中生成如下文件
此時的mcdnb-1.0.0.aar 就是我們需要的aar 類庫.
正確的使用方法:
1.在項目最外層build.gradle 文件中添加如下代碼(路徑與之前生成路徑保持一致)
allprojects {
repositories {
jcenter()
maven{ url "file://Users/kevinbai/Desktop"}
}
}
2.在module build.gradle 文件中直接引用
格式 :pom.groupId : pom.artifactId : pom.version
示例 :
compile 'com.payment.nb:mcdnb:1.0.0'
- 創建遠程Maven倉庫,生成aar類庫 @TODO
創建Maven遠程倉庫方法省略
使用aar 類庫方法(此方法不解決以上問題,切勿使用)
1. libs文件夾下引用方法
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")
}