IllegalArgumentException:已添加:Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl;

我在MyProject + Facebook api上使用Android Studio + gradle作为库。 请参阅以下设置。

我已经尝试删除support-v4的所有引用(r7或18.0.0)并用support-v13替换它们,但是带有v4的消息仍然存在。 我也注意到support-v4-r7出现在外部库中,即使它根本没有被引用。 那会是问题吗?

MyProject build.gradle

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() maven { url "https://raw.github.com/ark/ark/master/releases/" } } dependencies { compile 'com.andreabaccega:android-form-edittext:1.0.3' compile 'com.astuetz:pagerslidingtabstrip:1.0.0' compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.12' compile 'com.octo.android.robospice:robospice-spring-android:1.4.7' compile 'com.google.android.gms:play-services:3.1.36' compile files('libs/imageloader-core-1.5.8.jar') compile project(':libs:Facebook') } android { compileSdkVersion 17 buildToolsVersion "18.1" defaultConfig { minSdkVersion 15 targetSdkVersion 17 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['res'] res.srcDirs = ['res'] } debug { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src', 'libs/Facebook/src', 'libs/Facebook/build/source/r/debug', 'libs/Facebook/build/source/buildConfig/debug'] resources.srcDirs = ['build', 'libs/Facebook/build/source/r/debug', 'libs/Facebook/build/source/buildConfig/debug'] res.srcDirs = ['res'] } } } 

MyProject settings.gradle:

 include ':MyProject' include ':libs:Facebook' 

Facebook build.gradle:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android-library' repositories { mavenCentral() } dependencies { compile 'com.android.support:support-v4:18.0.0' } android { compileSdkVersion 17 buildToolsVersion '18.1' defaultConfig { minSdkVersion 8 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['res'] res.srcDirs = ['res'] } debug { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src', 'build/source/r/debug', 'build/source/buildConfig/debug'] resources.srcDirs = ['build/source/r/debug', 'build/source/buildConfig/debug'] res.srcDirs = ['res'] } } } 

编辑:我已经尝试在另一个项目中逐个添加我在此项目中使用的库,以查看失败的内容。 显然这两个人是罪魁祸首。 如果我包含其中任何一个或两个,我会收到上述错误。

 compile 'com.astuetz:pagerslidingtabstrip:1.0.0' compile 'com.google.android.gms:play-services:3.1.36' 

关于如何管理这个的任何想法?

Edit2:显然另一个项目提出了同样的问题。 请参阅下面的build.gradle依赖项。 StickyListHeaders项目不再包含依赖项。 所以我认为这是因为ActionBarSherlock?

 dependencies { compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' compile 'com.android.support:support-v4:18.0.+' compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.12' compile 'com.octo.android.robospice:robospice-spring-android:1.4.7' compile project(':Project Base:libs:StickyListHeaders') } 

对于任何碰巧在使用Visual Studio和Xamarin时遇到此错误的人,就像我一样;

我通过简单地从项目中的References文件夹中删除对“Xamarin.Android.Support.v4”的引用来解决它,然后正常清理和构建项目。

显然这个问题有两个原因。

1)PagerSlidingTabStrip库依赖于本地支持lib v4 jar。 删除依赖项并将项目添加为应用程序中的库项目,并在其中添加maven依赖项以支持v4。 所以它看起来应该与上面的Facebook库项目完全一样。

2)RoboSpice库依赖于来自支持lib v4的LRUCache( https://github.com/octo-online/robospice/issues/195 )。 只需将它从主build.gradle文件中排除,你应该好好去。

 compile ('com.octo.android.robospice:robospice-spring-android:1.4.7') { exclude module: 'support-v4' } 

希望这会帮助某人,而不是像我一样花一整个星期来解决这个问题。 哦,还有万亿感谢@Snicolas。 没有他的帮助,无法解决它。

编辑:从RoboSpice v1.4.8开始,没有更多本地支持lib依赖项,因此修复了此问题。

运行“gradle androidDependencies”并检查您的从属树。 为重叠的模块添加排除。

例如,我必须执行以下操作:

 dependencies { compile 'com.google.android:support-v4:r7' compile project(':libraries:actionbarsherlock') compile ('com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+') { // Need to specifically exclude this as it is specified in our own project exclude module: 'actionbarsherlock' exclude module: 'support-v4' } } 

当这是Xamarin.Android时 ,对于依赖的包之间的版本不匹配会发生此错误。 您必须从项目中删除此Xamarin.Android.Support.v4包以及其他不匹配的包。 (这里的不匹配意味着,如果你的目标Android版本是Android 6,那么packages.config文件中列出的所有软件包都应该有targetFramework =“monoandroid60”软件包。如果任何软件包不遵守这个,那么它就是一个不匹配的版本) 。 如果你已经搞乱了版本,那么单独删除引用和清理内容是行不通的。 您必须从Nuget包管理器中删除所有不匹配的包(工具> NuGet包管理器>管理解决方案的NuGet包…) 。 请注意,当您要删除这些包时,您还需要删除所依赖的包。 没有任何伤害并将其全部删除,您可以使用正确的版本重新安装它们。

一旦将包与依赖包一起删除,请尝试构建项目。 成功构建后,使用正确的版本Nuget Package Manager重新安装软件包。 (软件包版本根据API级别列出, 例如: Android 6,即API 23,将支持版本23.xx的软件包)

清理项目并构建它,希望它能够成功构建!

希望这有助于清理乱七八糟的东西!

页面滑块库还具有支持库依赖项。 因此,您收到此错误。 在maven的情况下,您需要做的就是将支持库的主项目pom文件依赖项条目更改为提供的范围。

  android.support compatibility-v4 13 provided  

在gradle的情况下,我认为你需要更改依赖配置以匹配maven提供的范围

有关详细信息,请参阅以下链接将Maven转换为Gradle

我刚刚遇到同样的问题。 我只是将所有Xamarin.Android.Support … nuget包更新到同一版本。

注意:这个应用程序比较旧,所以我没有去最新的稳定版本,因为还有其他需要更新的依赖项。 我只是将它们全部移动到最高的通用版本。

祝你好运! 汤姆

删除所有旧的引用.dll并与之相关并再次从NuGet添加。