關於導很多jar包和類庫之後出現的問題

最近公司項目需求導了很多的jar包和類庫。遇到了許多問題,在這個過程中各種錯誤各種報,還都是編譯能通過運行通不過的錯誤。給人整的那叫一個懵。在這裏將自己遇到的問題以及解決方案分享出來以供大家共同學習

首先我是用AS開發的,我要導的第一個moudle就是環信的easeUI。依賴上之後編譯沒有問題,運行時就會報錯:

Error:Execution failed for task':app:transformClassesWithDexForDebug'.

>com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException: Process 'command'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finishedwith non-zeroexit value 1

然後在網上找到http://blog.sina.com.cn/s/blog_6f3828770102w30b.html之後那叫一個高興啊,我就刪了自己app裏邊的V4包。然後又clean,rebuilder。心想總該沒事了,但是問題又出現了:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class
我就接着百度,各種說法都有,更讓人頭疼的是好多回答都是英文的,我雖然是老外的腦殘粉,可我的英語也夠腦殘。無奈之下求助環信的工作人員,給出瞭解決方案:
解決方案,在build.gradle中添加如下配置:
configurations {
      all*.exclude group: 'com.android.support', module: 'support-v4'
}
當時並不明白爲什麼這樣,就百度了一下,感覺這個說的還靠譜點,大家可以借鑑:http://blog.csdn.net/raptor/article/details/38538037。
但是再次編譯運行還是有問題:
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/hyphenate/EMCallBack.class
這次就簡單了,一看就知道還是自己app裏邊的jar包和easeUI裏邊的重複了。我就去看easeUI裏邊和自己app裏邊的jar包,發現hyphenatechat這個jar包重複了,我就把app裏邊的刪除再次編譯運行好了。(最後一次出現的問題完全是自己的粗心導致的,當時在看文檔的時候按照文檔走的,就把那個jar包拷貝進app的lib下邊,導入ui庫之後我發現了ui庫裏邊也有這個jar包,當時我想刪除app中的來着,但是發現ui庫裏邊的並沒有add as library,然後我就想當然的以爲不管是add進app還是ui庫,反正就add了一次應該不會有問題的。然而事實並非如此)
因爲在easeUI的build.gradle文件中是這樣一句話,
compile fileTree(dir: 'libs', include: ['*.jar'])
這就是當在libs下邊有多個jar包時可以用這樣一句話包含所有,因爲app中有了上述的hyphenatechat包,所以在ui庫裏
不是add as library的狀態,但是也是引用進項目中的,所以就重複了。


解決了這樣的問題之後,在寫微信支付和友盟第三方登錄的時候也遇到了類似的jar包重複的問題,有了上邊的經驗,這一次的很快就得到了解決。想起自己第一次寫友盟分享的時候也有這樣的問題,哪個時候的自己採用了最笨的方法,將需要的文件拷貝進自己的項目中,這樣做雖然解決了問題,但是後期的更新就不好做了,所以還是沒有從根本上解決問題。這裏的問題和解決方法就不贅述了,有問題的可以私信我。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章