添加库时,我无法构建,错误:无法合并dex

时间:2018-02-02 00:24:04

标签: android

我已经尝试了alueChange @Output并更改了@FormControlNamemultiDexEnabled true,但它确实无效。

导致错误的库是:

minSdkVersion 18

我还试过多个版本的mime,4.0和4.1没有给出错误,但它没有compileSdkVersion 26因此我无法使用它,4.2后它给我错误

'libs/httpmime-4.5.5.jar'

建造时。

我的gradle文件是:

编辑:更改Gradle

MultipartEntityBuilder

修改

我不知道为什么,但是最终会显示错误

Error:Execution failed for task 
:app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: 
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

修改2

我找到了解决方案,不是最干净但有效的

Getting NoSuchFieldError INSTANCE org/apache/http/message/BasicHeaderValueParser

我正在使用这个lib:https://code.google.com/p/httpclientandroidlib/ 与另一个相同,但包名不同。

感谢所有人。

2 个答案:

答案 0 :(得分:0)

可能这可以帮到你

configurations.all {
resolutionStrategy.dependencySubstitution {
    substitute module('org.apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2')
} }

build.gradle中并重建项目

答案 1 :(得分:0)

首先,您不需要以下依赖项,需要将其删除:

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

因为您已经通过添加以下内容来使用http库:

useLibrary  'org.apache.http.legacy'

然后,您需要使用来自maven而不是jar的aar来获取httpmime。您还需要从httpmime中排除httpclient:

// don't use this!!
//implementation files('libs/httpmime-4.5.5.jar')

// use this instead.
implementation('org.apache.httpcomponents:httpmime:4.5.5') {
    exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}