?? 我發(fā)現(xiàn)我真不是一個好的開發(fā)人員,對自己用過的功能或使用過的方法一段時間不用之后就忘記了,再次使用時,就只記得了個大概。唉,記性不好的我決定相信一下爛筆頭,把它記錄下來,下次如果再忘記了,還有地方查找。
第一步:新建依賴
首先我新建一個新的依賴,里面放有兩個工具類,然后打開依賴的build.gradle文件,確保下圖劃紅線位置是library狀態(tài)。

第二步:配置打包信息
其次在build.gradle里面android{...}平級的地方配置打包信息
def JAR_BASENAME = "utilsLib" // jar包的名稱
def JAR_VERSION = "_V1.0" // jar包的版本號
def JAR_PATH = "build" // 生產(chǎn)jar包的路徑位置
def JAR_SUFFIX = ".jar" // 生產(chǎn)jar包的文件后綴
def zipFile = file('build/intermediates/compile_library_classes/debug/classes.jar')// 待打包文件文字
task clearJar(type: Delete) {
delete JAR_PATH + JAR_BASENAME + JAR_VERSION + JAR_SUFFIX //拼接jar包的名字
}
// 方法一:將assets目錄打入jar包
task makeJar(type:Jar){
from zipTree(zipFile)
from fileTree(dir:'src/main', includes: ['assets/**']) // 在這里將assets目錄打入jar包
baseName = JAR_BASENAME + JAR_VERSION
description = file(JAR_PATH)
}
// 方法二:打包的jar包只有源代碼的.class文件,不包含資源文件
task makeJar(type:Jar){
baseName = JAR_BASENAME + JAR_VERSION
//從哪里打包c(diǎn)lass文件
// from('build/intermediates/packaged-classes/debug/')
from('build/intermediates/javac/debug/compileDebugJavaWithJavac/classes')
//去掉不需要打包的目錄和文件
exclude('test/', 'BuildConfig.class', 'R.class')
//去掉R開頭的文件
exclude{ it.name.startsWith('R$'); }
}
makeJar.dependsOn(clearJar, build)
代碼里面寫了兩種makeJar的方法,實(shí)際運(yùn)用時,只用其中一種即可。
這里著重說明一下方法二里面打包c(diǎn)lass文件的路徑,不同的AndroidStudio和gradle版本里,這個路徑是不同的,具體什么原因不是太清楚,我的理解是文件路徑變了而已。
之前使用 from('build/intermediates/packaged-classes/debug/') 這個路徑時,打包的jar包里包含class文件。但是今天再使用這個路徑時,打包的jar文件里面就沒有class文件了。如下圖:

而使用 from('build/intermediates/javac/debug/compileDebugJavaWithJavac/classes') 這個路徑時,打包的jar文件里面就包含了class文件。如下圖:

既然這個路徑時不固定的,我的建議是知道上面意思就好,具體使用時查看build/intermediates下的文件夾,看哪一個里面包含class文件,就用哪個好了。
方法二里面還有一個不理解的地方,就是下面兩行代碼:
//去掉不需要打包的目錄和文件
exclude('test/', 'BuildConfig.class', 'R.class')
//去掉R開頭的文件
exclude{ it.name.startsWith('R$'); }
這兩行代碼是參照網(wǎng)上其他人的代碼添加的,但不知道是我添加的不對還是其他別的原因,這兩行代碼不起作用,生成的jar包里面依然包含有BuildConfig文件。有人知道原因的話可以留言告訴我喲。
第三步:開始打包
配置信息添加完成之后,打包的主要工作就做完了,剩下的就是實(shí)際生成jar包了,這個比較簡單,估計(jì)大家也都知道怎么操作了,不過這里我也記錄一下吧,有兩種方式可實(shí)現(xiàn)打包。
方法一:在Gradle面板上,選擇要打包的依賴項(xiàng)目,然后在其目錄下找到 Tasks --> other --> makeJar命令。

然后雙擊makeJar開始打包,當(dāng)Run面板運(yùn)行完畢后如下字樣,提示打包成功。

然后可在依賴項(xiàng)目下找到打包的jar包文件。

方法二:在AndroidStudio終端窗口中輸入 gradlew makeJar 命令,也可開始打包。打包完成時會有提醒。
