這幾天在做項(xiàng)目打包 library 的時(shí)候遇到一個(gè)問(wèn)題,由于之前一直是將 library module打包成 Jar 包被 app 和其他 library module 引用,所以項(xiàng)目編譯和運(yùn)行都正常工作。但是現(xiàn)在對(duì) sdk library 做了一些改動(dòng),在 res/ 目錄下新增了一個(gè) xml 文件,這就造成打包出來(lái)的 jar 用在項(xiàng)目中編譯會(huì)出錯(cuò),找不到對(duì)應(yīng)的 res 文件钦铺。網(wǎng)上查閱資料發(fā)現(xiàn)打包成 .aar 可以包含class和res資源文件,但后面接連踩了一系列的坑肢预, 所以也就有了本文的開(kāi)始:
一. 打包成 .aar 包
有兩種方式: 1.編寫(xiě)task執(zhí)行打包操作矛洞;2.手動(dòng)在項(xiàng)目中找到aar包并重命名
1.在編寫(xiě)task執(zhí)行打包操作: 注:libraryModule為需要引用 .aar包的一個(gè) library module
(1).在需要打包的 module(該 module應(yīng)該是一個(gè)library) 目錄下的build.gradle中實(shí)現(xiàn)一個(gè)task -> make AAR, 代碼如下圖:
(2).然后在 AS 的Terminal 或 cmd 命令行執(zhí)行 $: gradle makeAAR;然后在libraryModule/build/libs/目錄下找到對(duì)應(yīng)的? aar包:
(3) 引用.aar 包
首先將打包出來(lái)的 .aar 包拷貝到需要引用的 module name/libs/ 目錄下;然后在需要引用的 app module或者是 library module的build.gradle中做如下操作:
(4). 如果該 library 還被 app module引用烫映,name還需要在 app module 的build.gradle中加上:
repositories {
flatDir {
dirs'libs'
? ? }
}
(5).完成以上操作后執(zhí)行 build ->Rebuild Project操作即可沼本。
2.手動(dòng)在項(xiàng)目中找到aar包并重命名
只需要省去以上 1 中的第一步,在第二步中的 libraryModule/build/outputs/aar/? 目錄下找到對(duì)應(yīng)的 .aar 并重命名將其拷貝到所需module的libs 目錄下锭沟,再執(zhí)行 1 中剩下的其他操作擅威。