安卓無法調用模塊aar中的依賴問題

問題背景

模塊化在安卓開發(fā)中應用廣泛,開發(fā)者可以將自己工程中的模塊編譯成aar提供給其他工程使用,也可以使用其他工程提供的模塊aar. 但是這些aar可能有自己的依賴(如jar包)等。當外部工程在依賴aar時,可能無法依賴到aar的依賴。

模塊被自身工程使用的情況

對于被依賴的模塊,如果其是在自身的工程中,如果在編譯時提示找不到相關的類或資源,常見的解決方案是:

  • 將compileOnly修改為implementation或api
  • 若是單元測試無法依賴,需添加androidTestImplementation
    即解決思路就是修改build.gradle中的編譯關鍵字,讓其依賴在編譯后,也能被打包到apk中。

模塊被其他工程使用的情況

一般情況下,模塊包括資源文件的話,需要將其編譯成aar文件,才能被其他工程所依賴。但是會發(fā)現(xiàn),不管是否使用implementation或者api關鍵字,其相關依賴都不會被編譯到aar文件中。導致在依賴aar時,會告警找不到aar中的類。

常見的解決方案為:

  • 將依賴復制到工程中
    若模塊中的依賴不是動態(tài)依賴,即是將依賴文件放置在本地路徑下。可以將這些依賴復制到使用模塊的工程中。不推薦該方法。

  • 復制依賴到aar中
    在對應模塊的build.gradle中添加task

task copyLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

執(zhí)行該任務后,相應的依賴會被包含到aar中。

  • 在外部工程中添加依賴
    例如在aar對應的模塊中,其依賴是
implementation xxx

只需將這句命令復制到使用aar的工程的build.gradle中,即可實現(xiàn)對其的依賴。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容