在android開發(fā)過程中卒稳,我們有時會遇到比較大的項目蹋半,而本身負(fù)責(zé)該項目中的一個子功能實現(xiàn),這個時候可以考慮將該子功能模塊充坑,打包成jar包提供給其他人使用减江。
一染突、含義介紹,什么是JAR?
JAR(Java Archive辈灼,Java 歸檔文件)是與平臺無關(guān)的文件格式份企,它允許將許多文件組合成一個[壓縮文件]。為 J2EE 應(yīng)用程序創(chuàng)建的 JAR 文件是 EAR 文件(企業(yè) JAR 文件)巡莹。JAR 文件格式以流行的 ZIP 文件格式為基礎(chǔ)司志。與 ZIP 文件不同的是,JAR 文件不僅用于壓縮和發(fā)布降宅,而且還用于部署和封裝庫骂远、組件和[插件程序]和 JVM 這樣的工具直接使用。在 JAR 中包含特殊的文件腰根,如 manifests 和部署描述符激才,用來指示工具如何處理特定的 JAR。
二额嘿、android中jar包
可以發(fā)現(xiàn)整個jar并不包含任何res文件瘸恼,即你無法在jar包里面防止drawable园匹,layout漆撞,string 等等柿顶,如果必須要使用這些東西昌抠,可以使用打包成aar雀久。
三顺呕、android jar如何構(gòu)建
-1.新建一個項目伍掀,然后給項目新建一個Modle蛀缝,一般會自動添加依賴
build.gradle里面Modle的依賴
-2.在Modle里面實現(xiàn)你的純java模塊刘莹,然后在你的Modle 的build.gradle的android{}里面添加如下代碼:
task makeJar(type: Copy) {
//刪除存在的
delete 'build/libs/myjar.jar'
//設(shè)置拷貝的文件 打進(jìn)jar包后的文件目錄
from('build/intermediates/packaged-classes/release/')into('build/libs/')
//將classes.jar放入build/libs/目錄下
//include ,exclude參數(shù)來設(shè)置過濾
//(我們只關(guān)心classes.jar這個文件)
include('classes.jar')
//重命名
rename ('classes.jar', 'myjar.jar')
}
makeJar.dependsOn(build)
注意:在as 3.2中對 intermediates 做了更改阎毅,build/intermediates/packaged-classes/release/表示classes.jar的位置
而在as2.2中路徑是這樣的 build/intermediates/bundles/defalut/,無論怎樣添加上classes.jar路徑即可点弯,而markJar會把classes.jar換成一個新的名字扇调,例如myJar.jar。
-3.在AS的左下方點擊Terminal然后輸入 gradlew makeJar 即可抢肛。
其中g(shù)radlew是指令而markeJar是你在build.gradle的命名
當(dāng)出現(xiàn)SUCCESS即表示當(dāng)前的jar打包成功狼钮,如果失敗并且為包含res文件,可以查看日志信息捡絮,在build.gradle中添加
lintOptions {
abortOnError false
}
可以解決部分錯誤中斷jar包生成熬芜。