版權聲明:本文為xing_star原創文章,轉載請註明出處! 本文同步自http://javaexception.com/archives/166 Android多module下重覆jar包問題 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的方式。希望對大家有用。