Используйте библиотеку поддержки в проектах и библиотеке Android (Android Studio)
Я использую новую студию Android, я ищу способ использовать библиотеку поддержки из нескольких проектов. В основном у меня есть проект, который использует ActionBarSherlock
для этого проекта требуется библиотека поддержки. Поэтому я добавил ссылку, как в этот вопрос.
Теперь у меня проблема с тем, что мой основной проект также использует библиотеку поддержки, поэтому у меня она включает в себя два раза. Если я удалю библиотеку из одного из двух проектов, я получу ошибки, которые некоторые классы, связанные с библиотекой поддержки, неизвестны, что ясно для меня, но если у меня есть ссылка в обоих проектах, я столкнусь с этой ошибкой:
Android Dex: [ProjectName] UNEXPECTED TOP-LEVEL EXCEPTION:
Android Dex: [ProjectName] java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ShareCompat$ShareCompatImplJB;
Android Dex: [ProjectName] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
Android Dex: [ProjectName] at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
Android Dex: [ProjectName] at com.android.dx.command.dexer.Main.processClass(Main.java:490)
Android Dex: [ProjectName] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
...
Любая идея, как это исправить?
Ответы
Ответ 1
Я исправил это, перейдя в File > Project Structure...
и выбрав Modules
, затем перейдите на вкладку Dependencies
модуля. Затем рядом с библиотекой я изменил область действия с Compile
на Provided
.
Это означает, что модуль все еще может использовать его, но он не достигает компиляции, так как я предполагаю, что вы уже используете этот JAR в своем основном проекте.
Надеюсь, это поможет!
Ответ 2
У меня была аналогичная проблема со мной. Выберите actionbarsherlock
на вкладке/панели проекта/независимо (слева, чтобы вы могли увидеть дерево проекта). нажмите F4
, чтобы открыть настройки модуля.
Убедитесь, что вы не используете одни и те же зависимости дважды в actionbarsherlock и вашем проекте.
Также убедитесь, что вы используете версию библиотеки поддержки, которая находится в Android-студии sdk (android-studio/sdk/extras/android
).
Наконец, если вы похожи на меня, убедитесь, что вы случайно не сделали actionbarsherlock зависимым от себя, таким образом, загрузив библиотеку дважды THAT!. > & Л;
Взгляните на эти изображения, демонстрирующие мои настройки модуля:
http://imgur.com/a/JupWp
![Actionbar Sherlock]()
![enter image description here]()
Кроме того, не забудьте убедиться, что libs
не скрывает ни одного из них!
Ответ 3
Было ли это проектом Eclipse? Если да, попробуйте войти в Eclipse, очистите проект, выйдите, перестройте в IntelliJ. Я считаю, что это проблема состояния, а не проблема с конфигурацией.
Ответ 4
Вместо импорта библиотеки поддержки android в качестве jar я изменил зависимости библиотек (в моем случае facebook sdk) в файле build.gradle:
dependencies {
compile 'com.android.support:support-v4:13.0.0'
}