错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
Posted
技术标签:
【中文标题】错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat【英文标题】:Error: Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat 【发布时间】:2018-09-22 00:43:01 【问题描述】:升级到 android Studio 3.1 后,我在构建过程中开始出现以下错误。 Project 使用 multidex,并且默认情况下启用 DX,正如您在错误中注意到的那样。我试图检查依赖关系图以了解发生了什么,但到目前为止还没有任何线索。有趣的是,这只在我的机器上失败了。我清理了所有东西,包括重新安装等,但没有任何效果。
有人遇到过同样的问题,你是怎么解决的?或者我可以看看的任何方向?
AGPBI:
"kind":"error",
"text":"Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat",
"sources":[],
"tool":"D8"
这是失败的任务:
transformDexArchiveWithExternalLibsDexMergerForDebug
我检查了类似的问题,似乎随机的事情解决了他们的问题,我不确定真正的原因是什么。
【问题讨论】:
【参考方案1】:对于我的解决方案(我不知道它是否适合你):
首先我关注@Orhan Obut's
解决方案:
Search for duplicate classes in your project
我发现不同的库中有不止一个类文件。
然后我将忽略注释放在我的项目模块的build.gradle(app文件夹)中我的支持依赖项之上:
//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
它提出了解决冲突的方法。因此,我把它放在我的 gradle 上,就在依赖项声明的上方:
configurations.all exclude group: 'com.android.support', module: 'support-v4'
从那时起,当我使用上面的@Orhan Obut's
解决方案为这个类搜索重复的类时,我在结果中只找到了一个条目。这意味着没有重复。
此外,如果您使用最新的 SDK 和构建工具迁移到 AndroidX 会更好。确保您在任何地方都没有旧的支持依赖项。
快乐编码:-)
【讨论】:
你需要找出不同版本中哪个类是重复的。【参考方案2】:我有我的解决方案,改变这个:
implementation 'com.android.support:appcompat-v7:27.0.0'
到
implementation 'com.android.support:appcompat-v7:26.0.0'
它对我有用。
【讨论】:
不幸的是,这对我不起作用。有趣的是,除了我之外,其他人都可以。【参考方案3】:我通过以下步骤设法确定了根本原因。每个问题的用例可能不同,因此这是确定根本原因的方法。
去安卓工作室 导航 -> 类 检查include non-project classes
复制粘贴完整的类路径和包名。 android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
您应该能够看到它的使用位置。很可能您可能需要将其从其中之一中删除。
在我的情况下,问题是 ViewPagerIndicator 库正在将支持库下载为 jar。删除它解决了这个问题。
【讨论】:
我删除了 viewpager 指标库并且工作正常.. fr.avianey.com.viewpagerindicator:library:2.4.1.1 程序类型已经存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat 这种情况怎么办?【参考方案4】:为了简单的选择,只需添加
configurations.all exclude group: 'com.android.support', module: 'support-v4'
在 build.gradle app 模块中的依赖之前,它应该忽略 v4 支持库,重复错误就会消失。
【讨论】:
【参考方案5】:在应用级别的 build.gradle 中添加以下行对我有用
implementation 'com.android.support:support-v4:28.0.0'
【讨论】:
【参考方案6】:对我来说,这有助于解决此类问题
所有支持库(也包括第三部分)减少到指定版本
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'
【讨论】:
【参考方案7】:不久前我也遇到了同样的问题。在我的情况下,第三方库使用较旧的 AccessibilityServiceInfoCompat 版本 v4 22,我已经更新到较新的 v4 28,因此两个支持库类发生冲突
【讨论】:
【参考方案8】:在你的情况下,我已经解决了问题
implementation 'com.android.support:appcompat-v7:26.0.0'
到
implementation 'com.android.support:appcompat-v7:27.1.1'
【讨论】:
【参考方案9】:某些第三方库可能使用不同版本的支持库。你可以用./gradlew :app:dependencies
找出来,然后导入当前版本的支持库。
【讨论】:
【参考方案10】: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
【讨论】:
以上是关于错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat的主要内容,如果未能解决你的问题,请参考以下文章
错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
错误:程序类型已存在:android.support.design.widget.CoordinatorLayout$Behavior
错误:程序类型已存在:com.google.android.gms.internal.measurement.zzdz 添加分析后
Android:v7 支持 lib 27.1.0 的编译错误“程序类型已存在”android.support.v7.recyclerview.extensions.ListAdapter