一、工具版本:Android Studio 3.1.4,gradle 3.0.0
二、問題描述:debug 時沒有問題,但是在生成 release APK 時,報錯:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForRelease'.
及
trouble processing "javax/xml/namespace/QName.class":
截圖如下:
三、問題原因:我出現這個問題的原因來自于,使用了 smack 模塊,而其中包含的 “xpp3” 模塊可能和 Android 提供的內部版本沖突,需要在 dependencies 中去除。
四、解決方式:
在 app 層的 build.gradle 中的 dependencies (即添加相關依賴的地方)中加入:
configurations { all*.exclude group: 'xpp3', module: 'xpp3' }
五、發現哪個依賴可能出現問題的步驟
將 gradle 版本從 3.0 修改回 2.3.3。即:在頂層的 build.gradle 中 gradle 相關修改為如下:
dependencies { classpath 'com.android.tools.build:gradle:2.3.3' }
點擊“Sync Now”后,就會出現 WARNING 如下圖:
這就是錯誤來源。不知道為什么 gradle 3.0 不報這個問題。
找到來源后,就可以把 gradle 版本從 2.3.3 改為原來的 3.0 了。
然后按上面步驟加入相關代碼即可。
解決問題的答案主要來自以下鏈接:
https://stackoverflow.com/questions/10098088/dalvik-vm-error-exception-found-javax-xml-namespace-qname-class
https://stackoverflow.com/questions/48488563/gradle-xpp3-error?rq=1