轉載請標明出處,維權必究:https://www.cnblogs.com/tangZH/p/9939663.html 在做項目的時候引入aar包,編譯的時候卻提示錯誤(這個錯誤大概說的是.......模塊B>模塊C......有點忘了),其實大概可以看出是由於多個模塊重覆依賴造成的,下麵具體講講:主 ...
轉載請標明出處,維權必究:https://www.cnblogs.com/tangZH/p/9939663.html
在做項目的時候引入aar包,編譯的時候卻提示錯誤(這個錯誤大概說的是.......模塊B>模塊C......有點忘了),其實大概可以看出是由於多個模塊重覆依賴造成的,下麵具體講講:
主項目A引入模塊B和C,模塊B中也引入了模塊C,而模塊C中引入了aar包
(aar包在libs文件中,具體怎麼引入請看我另一篇博客:https://www.cnblogs.com/tangZH/p/9939494.html)
那麼這時候就要註意了:
1、我們需要在模塊B中的build.gradle文件中的android標簽下寫上下麵代碼:
repositories { flatDir {
dirs 'C的libs文件夾路徑' } }
假如模塊C與模塊B處於同一個目錄下,那麼模塊C的libs文件的路徑應該這樣寫../C/libs(關於相對路徑這一塊,可以看我另一篇博客https://www.cnblogs.com/tangZH/p/9939655.html )
如果有其它模塊的libs路徑需要添加,那麼就在後邊用逗號隔開
dirs 'C的libs文件路徑','XX'
2、由於A也引用了模塊C,所以需要做相同的處理,因為編譯的時候會去找aar包。
在實際過程中發現編譯已經沒有問題了,但是A中無法調用aar包中的代碼,最終發現:
將C的build.gradle中的implementation (name: 'aar包名稱', ext: 'aar') 改為:api (name: 'aar包名稱', ext: 'aar')就可以了,因為implementation指的是本Module,但是api指的是整個項目,依賴的範圍不同。
在這個過程中需要格外註意的是相對路徑不要寫錯,否則會報找不到arr包的錯誤,如果還不行就clean一下工程