升级到Android Studio 3.1后,我在构建期间开始出现以下错误。项目使用multidex,默认情况下启用DX,就像您在错误中注意到的那样。我试图检查依赖图以了解发生了什么,但到目前为止还没有任何线索。有趣的是,这只能在我的机器上失败。我清理了一切,包括重新安装等,但没有任何效果。
任何人都有同样的问题,你是如何解决的?或者我可以看看的任何方向?
AGPBI: {
"kind":"error",
"text":"Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat",
"sources":[{}],
"tool":"D8"
}
这是失败的任务:
transformDexArchiveWithExternalLibsDexMergerForDebug
我检查了类似的问题,似乎随机的事情解决了他们的问题,我不确定究竟是什么原因。
答案 0 :(得分:13)
我通过更改此解决方案:
implementation 'com.android.support:appcompat-v7:27.0.0'
到
implementation 'com.android.support:appcompat-v7:26.0.0'
它对我有用。
答案 1 :(得分:11)
我设法通过使用以下步骤确定根本原因。对于每个问题,它可能是不同的用例,因此这是确定根本原因的方法。
include non-project classes
android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
在我的情况下,问题是ViewPagerIndicator库正在下载支持库作为jar。删除它解决了这个问题。
答案 2 :(得分:9)
对于我的解决方案(我不知道它将对您有用):
首先,我遵循@Orhan Obut's
解决方案:
Search for duplicate classes in your project
我发现在不同的库中有多个类文件。
然后,在项目模块的build.gradle(应用程序文件夹)中,在我的支持依赖项上方放置忽略注释:
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
我意识到无知不是解决方案,因为即使清除清理并清除/使项目的缓存无效后,错误也不会消失。
请参阅:Infographic: 11 Most Common Android Errors and How to Fix Them
因此,我进行了更多探索,并找到了此链接:
Android - Understanding and dominating gradle dependencies
它提出了解决冲突的方法。因此,我将其放在依赖项声明的上方:
configurations.all {exclude group: 'com.android.support', module: 'support-v4'}
从那时起,当我使用上面的@Orhan Obut's
解决方案为此类搜索重复的类时,我在结果中仅找到单个条目。那意味着没有重复。
此外,如果您使用最新的SDK并构建工具迁移到AndroidX,效果会更好。确保您在任何地方都没有较早的支持依赖项。
快乐编码:-)
答案 3 :(得分:5)
对于简单选项,只需添加
slice
在build.gradle应用程序模块中具有依赖性之前,它应忽略v4支持库,并且重复的错误将消失。
答案 4 :(得分:1)
对我来说,这有助于解决此类问题
所有支持库(也包括第三部分)缩减为指定的版本
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0-beta01'
}
}
}
}
答案 5 :(得分:1)
将以下行添加到应用程序级别的build.gradle中对我来说很有效
implementation 'com.android.support:support-v4:28.0.0'
答案 6 :(得分:0)
不久前,我也遇到了同样的问题。在我的情况下,第三方库使用了较旧的AccessibilityServiceInfoCompat版本v4 22,而我已经更新到了较新的v4 28,因此两个支持库类都发生冲突
答案 7 :(得分:0)
如果您是通过以下方式解决了问题
implementation 'com.android.support:appcompat-v7:26.0.0'
到
implementation 'com.android.support:appcompat-v7:27.1.1'
答案 8 :(得分:0)
某些第三方库可能使用了不同版本的支持库。您可以使用./gradlew :app:dependencies
进行查找,然后导入支持库的当前版本。
答案 9 :(得分:0)
I have my solution by change this :
android / build.gradle
buildscript {
ext {
supportLibVersion = "27.0.3"
}
}
to
buildscript {
ext {
supportLibVersion = "26.0.0"
}
}
directory android / app / build.gradle
defaultConfig {
multiDexEnabled true
}