16

Я использую новую студию Android, я ищу способ использовать библиотеку поддержки из нескольких проектов. В основном у меня есть проект, который использует ActionBarSherlock, для этого проекта требуется библиотека поддержки. Поэтому я добавил ссылку, как в this question.Использование библиотеки поддержки в проектах и ​​библиотеке Android (Android Studio)

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

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) 
... 

Любая идея, как это исправить?

+0

я думаю, вы должны удалить банку с туром проекта и попробовать , – Raghunandan

+0

@ Raghunandan вы заметили это: * «[...] Если я удалю библиотеку из одного из двух проектов, я получу ошибки, которые некоторые классы, связанные с библиотекой поддержки, неизвестны [...]» * – rekire

ответ

28

Я установил это, перейдя в File > Project Structure... и выбрав Modules, затем перейдите на вкладку Dependencies модуля. Затем рядом с библиотекой я сменил область с Compile на Provided.

Это означает, что модуль все еще может использовать его, но он не достигает компиляции, так как я предполагаю, что вы уже используете этот JAR в своем основном проекте.

Надеюсь, это поможет!

+0

Отличный ответ - просто работает :) – Ron

+1

Есть ли способ указать это вручную в build.gradle? – nhaarman

+4

Предоставлено больше не является вариантом в Android Studio 0.4.0. Есть ли способ указать это поведение в файле Gradle? – Greg

0

Было ли это проектом Eclipse? Если да, попробуйте войти в Eclipse, очистите проект, выйдите, перестройте в IntelliJ. Я считаю, что это проблема состояния, а не проблема с конфигурацией.

+0

Мне нужен был час для исправления ошибки проводного затмения. Однако это не сработает. – rekire

1

У меня была аналогичная проблема со мной. Выберите actionbarsherlock на вкладке/панели проекта/независимо (слева, чтобы вы могли видеть дерево проекта). нажмите F4, чтобы открыть настройки модуля.
Убедитесь, что вы не используете те же самые зависимости дважды в actionbarsherlock и вашем проекте.
Также убедитесь, что вы используете версию библиотеки поддержки, которая находится в анкете-студии sdk (android-studio/sdk/extras/android).

И, наконец, если вы похожи на меня, убедитесь, что вы случайно не сделали actionbarsherlock зависимым от себя, тем самым загрузив библиотеку в два раза ТОЧНО! >. <

Посмотрите на эти образы, показывая свои предпочтения модуля: http://imgur.com/a/JupWp Actionbar Sherlock enter image description here

Кроме того, не забудьте убедиться, что libs не скрывается какой-либо из тех же самых!

0

Вместо того, чтобы импортировать андроид библиотеку поддержки в баночке, я изменил библиотеки (в моем случае facebook SDK) зависимости в build.gradle для:

dependencies { 
    compile 'com.android.support:support-v4:13.0.0' 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^