IllegalArgumentException: уже добавлено: Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl;

Я использую Android Studio + gradle на MyProject + Facebook api в качестве библиотеки. См. Ниже настройки.

Я попытался удалить все ссылки на support-v4 (либо r7 или 18.0.0), и заменить их на support-v13, но сообщение с v4 все еще присутствовало. Я также заметил, что поддержка-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.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'] } } } 

Изменить: я попытался добавить библиотеки, которые я использую в этом проекте, в другом проекте, один за другим, чтобы увидеть, что не удается. По-видимому, эти 2 являются виновниками. Если я включу какой-либо или оба из них, я получаю вышеуказанную ошибку.

 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') } 

По-видимому, для этой проблемы было 2 причины.

1) Библиотека PagerSlidingTabStrip зависит от локальной поддержки lib v4 jar. Удалите зависимость и добавьте проект в качестве проекта библиотеки в приложении, а внутри него добавьте зависимость maven для поддержки v4. Таким образом, он должен выглядеть точно так же, как проект библиотеки Facebook сверху.

2) Библиотека RoboSpice зависит от LRUCache от поддержки lib v4 ( 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, поэтому эта проблема исправлена.

Для тех, кто сталкивается с этой ошибкой при использовании Visual Studio с Xamarin, как и я;

Я решил это, просто удалив ссылку на «Xamarin.Android.Support.v4» из папки «Ссылки» в проекте, а затем очистил и построил проект как обычно.

Запустите «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' } } 

Библиотека слайдера страницы также поддерживает зависимость библиотеки. Таким образом, вы получаете эту ошибку. В случае maven все, что вам нужно сделать, это изменить свой основной вход в файл проекта pom в библиотеке поддержки в объеме, как предусмотрено.

 <dependency> <groupId>android.support</groupId> <artifactId>compatibility-v4</artifactId> <version>13</version> <scope>provided</scope> </dependency> при <dependency> <groupId>android.support</groupId> <artifactId>compatibility-v4</artifactId> <version>13</version> <scope>provided</scope> </dependency> , <dependency> <groupId>android.support</groupId> <artifactId>compatibility-v4</artifactId> <version>13</version> <scope>provided</scope> </dependency> 

В случае градации я думаю, вам нужно изменить конфигурацию зависимостей, чтобы она соответствовала области maven

Пожалуйста, обратитесь к следующей ссылке для получения более подробной информации. Преобразование Maven в Gradle

Если это относится к 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)

Очистите проект и постройте его, надеюсь, он добьется успеха!

Надеюсь, это поможет очистить беспорядок!

Удалите все старые ссылки .dll и применитесь к этому и добавьте снова из NuGet.