前言
在Android開發(fā)過程中,不可避免的會使用到一些三方庫,這些庫多是為*.jar,*.so,*.aar類型的文件塔粒,其中so庫多是為C文件打包行程的庫,本文暫不做討論筐摘;jar包和aar包我們都可以通過建立自己的module進行生成卒茬,本文著重說明這兩種文件的區(qū)別及生成。
一咖熟、jar包和aar包含內(nèi)容區(qū)別
1. jar
jar文件可以說是和客戶端平臺無關的文件圃酵,其只包含class文件與清單文件。
由于jar包內(nèi)不包含圖片這種資源文件馍管,所以在打jar包時module里的res資源文件夾都是不會打進包里的郭赐,如果要引入資源,則需要配置assets文件夾确沸,將資源放在assets文件夾里堪置。
2. aar
aar文件和Android客戶端平臺緊密相連,是Android庫項目的二進制歸檔文件张惹,其包內(nèi)不僅包含有class文件舀锨,也包括有資源文件。
二宛逗、打包方法區(qū)別
1. jar打包
Android Studio中可以很方便的通過Gradle生成jar包坎匿。
首先我們需要在module的build.gradle
文件里新定義一個jar包任務:
//task to export contents as jar
task exportJar(type: Copy) {
//刪除原有jar包
delete 'build/libs/AndroidPlugin.jar'
//從build中查找jar包文件
from('build/intermediates/runtime_library_classes_jar/release/')
//copy到指定目錄
into('build/libs/')
include('classes.jar')
///Rename the jar
rename('classes.jar', 'AndroidPlugin.jar')
}
exportJar.dependsOn(build)
這樣的話就能夠在Gradle中查看到任務:moduleName/Tasks/other
中查找到上述任務:
執(zhí)行上述任務,我們能夠在在build/libs/
目錄下找到jar包文件AndroidPlugin.jar
。
2.aar打包
aar包目錄是:build/outputs/aar,替蔬,如下圖:
如果當前工程內(nèi)沒有build目錄告私,可以在Gradle中執(zhí)行當前module的assembleRelease構建生成release的aar包,如下圖:
三承桥、引入?yún)^(qū)別
jar包和aar包引入我們在接入第三方SDK時經(jīng)常能夠遇到驻粟,在此簡單記錄一下常規(guī)引入方式:
1. jar包引入
我們可以將jar包文件放置在app的libs目錄下,如下圖:
然后在module下的build.gradle
中設置如下配置:
android {
...
sourceSets {
main {
java.srcDirs = ['src/main/java']
jniLibs.srcDirs = ['libs']
assets.srcDirs = ['assets']
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
之后重新編譯凶异,如果編譯后能夠打開jar包蜀撑,就是引入完成了,如上圖剩彬。
2. aar包引入
aar包引入和jar包引入比較類似酷麦,同樣是將包放在libs目錄下:
然后在module下的build.gradle
文件中添加如下配置:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation(name:'ttsLib-release', ext:'aar')
}
然后在進行重新編譯,之后可以在lib目錄下看到引入的包喉恋,這樣就是引入完成了:
其他問題
在jar包的生成中沃饶,由于我們是通過Gradle去進行構建生成的,但是Gradle生成jar包的位置各個版本并不完全一致轻黑,在書寫腳本時最好不要直接copy代碼糊肤,先在build文件目錄中找一下你的jar包是否存在,及時更新路徑氓鄙。
附錄記錄下倉庫上傳配置轩褐,在module下的build.gradle
文件中添加如下配置:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "") {
authentication(userName: "", password: "")
}
snapshotRepository(url: "") {
authentication(userName: "", password: "")
}
pom.groupId = "android.library"
pom.artifactId = "voice"
pom.version = "1.0.0"
pom.packaging = "aar"
}
}
}
然后添加對應的地址及身份校驗,執(zhí)行此任務即可玖详。
總結
本文是對于Android中jar包和aar包的區(qū)別,打包及引入做一個簡單記錄勤讽。