启用Java 1.8构建后,构建步骤transformDexArchiveWithExternalLibsDexMergerForDebug
失败,并显示以下错误:
Program type already present: com.google.devtools.build.android.desugar.runtime.ThrowableExtension$ConcurrentWeakIdentityHashMap$WeakKey
Message{kind=ERROR, text=Program type already present: com.google.devtools.build.android.desugar.runtime.ThrowableExtension$ConcurrentWeakIdentityHashMap$WeakKey, sources=[Unknown source file], tool name=Optional.of(D8)}
我非常绝望,我不知道如何调试它,我应该尝试/检查什么,等等。当然,我已经尝试了干净的构建。
我的设置:
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1'
compileSdkVersion 27
buildToolsVersion '27.0.3'
我也在使用Kotlin。这个项目不小,我不能在具有相同依赖项的干净项目中复制它。
答案 0 :(得分:1)
最后我解决了这个问题。这是Google vr库(com.google.vr:sdk-videowidget
)中的错误-我们使用较旧的版本,因为较新的版本具有更高的最低SDK Api要求。越野车是1.80.0
,修补程序在1.130.0
中。
我已通过https://issuetracker.google.com/issues/69835550发现了这一点-直接在Google的问题跟踪器中进行搜索,可惜它没有在Google搜索中建立索引。库问题:https://github.com/googlevr/gvr-android-sdk/issues/513
答案 1 :(得分:0)
当两次执行相同的依赖项时,通常会出现此问题。
要寻找冲突,请在随后的adnroid Studio终端中运行
./gradlew app:dependencies
如果您使用的是Linux或
gradlew app:dependencies
如果您是寡妇
现在寻找冲突:
如果您看到一个库不止一次依赖于“旧版本->新版本”外观,那么如果gradle可以为您解决此冲突,如果您不这样做,那么这就是您需要的库使用下面的代码行从依赖它的任何一个库中排除。
解决方案是使用应用gradle文件中的以下行排除两次实现的依赖项
implementation ("<whatever>") {
exclude module: '<conflict library>'
}