一、工具版本: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