jar和aar在Android Studio中的生成和使用
目前環境
Android Studio3.0
jdk1.8
認識jar和aar
jar:java application resource 隻包含class檔案和清單檔案
aar:Android application resource 包含class檔案和其他所有的資源檔案
如此便一目了然了,如果你的庫需要資源檔案的話,jar是滿足不了的,隻能使用aar。
生成jar和aar
- 建立工程
-
建立moudle(library類型)
建立之後我們看下moudle的目錄,主要是在build-intermediates這層目錄下!
- 編譯一下項目,此時再來看moudle的目錄
經過以上簡單的三步,已經看到了我們的jar和aar的生成過程和存放目錄。是不是很簡單,繼續往下看!
4. 用jd-jui打開我們的jar,如圖:
哈哈,我們什麼也沒寫。接下來我們在myLibTest這個moudle裡邊編寫一個檔案JarTest,再編譯得到jar,繼續打開這個jar
編寫的内容是:
再次打開jar後是這樣的:
這次終于看到内容了,但或許你又會說,BuildConfig這是幹嘛的,都沒用,不想要。我們再來看一個目錄:
編譯之後,所有的檔案都會生成對應的.class檔案,我們的jar包也就是将這些class檔案都打進去了。
問題1:像R.class和BuildConfig.class這些沒用的不需要打進去。那麼能否設定過濾。
問題2:這個jar的名字能否自己指定,以及存放的路徑能否自己指定
針對以上問題,我們來了解一下修改gradle來生成jar包
gradle代碼示例:
//Copy類型
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/myLib.jar'
//設定要拷貝的檔案的目錄。debug or release
from('build/intermediates/bundles/debug/')
//拷貝到的那個目錄
into('build/libs/')
//将classes.jar放入build/libs/目錄下
//include ,exclude參數來設定過濾
include('classes.jar')
exclude('**/R.class')
exclude('**/BuildConfig.class')
exclude { it.name.startsWith('R$')}
//重命名
rename ('classes.jar', 'myLib.jar')
}
//生成jar
makeJar.dependsOn(build)
接下來在我們的指令終端Terminal輸入gradlew makeJar執行一下就ok了。然後再來看我們的目錄結構:
如代碼中所述,在build下多出了libs目錄,我們重新命名後的jar包就在這個目錄下。
jar和aar的使用
-
jar的使用
方法1:将jar拷貝到app中的libs,右鍵add as library選擇app即可。然後在你的gradle中會增加上依賴的那句話。
方法2:通過studio的試圖添加,步驟自行百度谷歌
-
aar的使用
同樣,還是拷貝到app的libs下。然後在gradle中配置如下
//指定在libs目錄下的檔案
repositories {
flatDir {
dirs 'libs'
}
}
//添加依賴
dependencies {
compile(name: 'aar的名字', ext: 'aar')
}
ps:如果有引入其他的第三方lib,是打不進aar中的。是以如果有引用的話,app中除了aar外的其他第三方庫也需要拷貝過來引用上!