前言:Android可以引用jar包和aar包,兩者的區別:
jar:只包含了class文件與Mainifest.xml文件 ,不包含資源文件,如圖片等所有res中的文件。
aar:包含jar包和資源文件。
一:aar的使用
? ? 步驟一:aar的生成相對簡單,編譯完成自動生成aar文件,在Module中的build/outputs/aar/目錄下
? ?步驟二:拷貝aar文件到需要引用的工程libs下
步驟三:在app中的build.gradle中添加紅框中的內容,點擊右上角Sync Now,即可使用aar包中的內容了。
repositories{
?????flatDir{
????????????dirs'libs'
? ? }
}
implementation(name:'wdreaderlib',ext:'aar')
二:jar包的生成和使用
首先說下我遇到的坑,Android Studio3.1以后,build/intermediates的目錄結構發生了改變,原先的bundle目錄不見了,jar包生成的路徑改為了build/intermediates/packaged-classes/release/,好了,說下jar包生成的步驟。
步驟一:點擊File - > new Module ->選擇Android Library -> next -> finish創建Mudule
步驟二:在你的Module中的build.gradle插入以下代碼
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
//Copy類型
task makeJar(type: Copy) {
//刪除原有jar文件
delete 'build/libs/updatelib.jar'
//設置拷貝文件
from('builbuild/intermediates/packaged-classes/release/')
//打進jar包后的文件目錄
into('build/libs/')
//將classes.jar放入build/libs/目錄下
include('classes.jar')
//重命名
rename ('classes.jar', 'updatelib.jar')
}
makeJar.dependsOn(build)
然后打開Terminal,輸入gradlew makeJar
如果你的AndroidStudio 重來沒有生成過Jar包第一次會比較慢,成功之后會出現下圖所示
在你的build/libs下就生成了jar包,可以把jar包拷貝到需要用到的項目中去,就不一一介紹了。
三:Library中引入aar報錯問題解決方法
如圖:module2引用module1,module1引用wdreaderlib.aar
需要在ylzykt52drivervice中的build.gradle中添加如下代碼,才不會引起報錯
repositories {
? ? ? flatDir {
? ? ? ? ?dirs'libs','../ylzykt52drivelib/libs'
? ? }
}
注意:是在最外層引入,如果ylzykt52drivervice上層還有module,就在上層的build.gradle中引用代碼