Android多module下重復jar包問題


版權聲明:本文為xing_star原創文章,轉載請注明出處!

本文同步自http://javaexception.com/archives/166

Android多module下重復jar包問題

Android開發中,多module下重復jar包問題碰到的次數還是挺多的。解決的方式有很多,這里一一匯總下。

先舉個例子,目前我們的app架構中,采用的是多module架構,有點類似於組件化架構的方式,其中一個module是阿里百川的,另外一個module是網易雲信。這兩個包都存在fastjson,都是通過把jar包拷貝到libs目錄下的方式引用的,這兩個jar包版本也不一致,所以,編譯的時候就提示錯誤了。問題產生的原因我們知道了,那么如何解決。第一種方式,將兩個module的jar都刪掉,然后都使用gradle遠程依賴一個特定版本的方式。第二種方式,新建立一個Common的module,存放這種jar包,保留合適的jar,然后阿里百川和雲信moudle都依賴這個Common module。

以上介紹了其中的兩種方案,我更傾向於第一種,改起來容易些。

接着我們再介紹下,另外一種方式,在一次需求中,發現有兩個module都引入了高德地圖sdk,版本也不一致,編譯之后,報錯了。如何解決呢,這塊沒有使用遠程依賴的方式,主要是沒有找到遠程依賴的使用方式。所以這里呢,兩個module的jar經過比較,保留了一個較高的版本,然后這兩個module都使用相同的jar,這樣的話,直接編譯肯定還是會報錯的,還需要對其中的一個module做處理(另一個module不用處理)。

可以看一下處理的代碼

//    api fileTree(dir: 'libs', include: '*.jar')
    provided files('libs/AMap2DMap_3.0.0_AMapSearch_3.6.1_AMapLocation_3.2.1_20161228.jar')

 

這兩行代碼都需要,第一行是去掉gradle自動掃描libs目錄下的jar,第二行是以provided的方式參與編譯,這樣就可以解決問題了。

最后在匯總下,本文一共講了三種處理多module下重復jar包問題的解決辦法。第一個是使用遠程依賴,第二個是建立一個Common moudle,用來存到jar包,其他module來引用它,第三種是使用provided的方式。希望對大家有用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM