Intereting Posts
A-GPS, сброс GPS и sendExtraCommand Проверьте ориентацию на телефоне Android Мне нужен кликабельный элемент пользовательского интерфейса вместо Toast (могу ли я создать пользовательский тост с возможностью клика?) AppBarLayout с отметкой height = 0dp не отвечает на сенсорные события (нажмите) Android вокруг фонового изображения макетов, только верхние или нижние углы Андроид первая вкладка намерения oncreate всегда вызывается, независимо от того, что мы устанавливаем tab2 как вкладку по умолчанию Откройте загруженный файл на Android N, используя FileProvider Facebook – Android авторизует ошибку приложения Эмуляция карты Android NFC с фиксированным UID Загрузка больших растровых изображений в ImageView в ViewPager – вне памяти Как проверить, запущен ли ожидающий намерение с помощью AlarmManager setRepeating уже запущен? Открывать программную клавиатуру программно Как вызвать метод в действии с помощью службы Android: как добавить кнопку в виде поверхности Почему мой TableLayout не разрешается накачивать?

Gradle Исключить или добавить ссылку на файл JAR, содержащийся внутри библиотеки classes.jar

Я столкнулся с некоторыми проблемами с библиотекой, которую я включил в свой проект: при попрошайничестве это была проблема конфликтных зависимостей, которую я разрешил, исключив support-v4 которая является общедоступным модулем.

Проблема в том, что один из этих lbsLib-release похоже, был построен с открытым .jar файлом внутри корневого проекта до сборки разработчика. ./gradlew app:dependencies я подтвердил, что зависимость не ./gradlew app:dependencies в графе построения.

И я нашел эту support-v4 встроенной в classes.jar расположенную по адресу: app/build/intermedites/exploded-aar/MyQaaAndroid/lbsLib-release/unspecified/classes.jar/ как вы можете видеть на рисунке ниже:

Введите описание изображения здесь

Я не могу самостоятельно перестроить проект, потому что это не библиотека с открытым исходным кодом, поэтому есть две проблемы:

  1. Если я добавлю compile 'com.android.support:support-v4:18.0.+' в build.gradle multiple dex file build.gradle во время сборки, поэтому библиотека будет ссылаться дважды.

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/app/BackStackState; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)

  1. Если я удалю все библиотеки, требующие support-v4 он выдает недостающую ошибку зависимостей во время выполнения приложения.

Поэтому я хотел бы знать, можно ли исключить этот .jar файл из сборки или сделать другие libs lbsLib-release от lbsLib-release встроенной support-v4 .jar .

 compile (project(':lbsLib-release')) { exclude module: 'support-v4' } compile ('com.sothree.slidinguppanel:library:2.0.4'){ exclude module: 'support-v4' } compile('com.google.android.gms:play-services:6.5.87') { exclude module: 'support-v4' } 

Заранее благодарю за ваши ответы!

Попробуйте использовать resolutionStrategy ( ссылка API ) в корневой build.gradle .

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } allprojects { repositories { jcenter() } configurations.all((Closure) { resolutionStrategy { force 'com.android.support:support-v4:21.0.2' // your version of support library } }) } 

В файлах с несколькими деками определить Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat легко, как exclude module: 'support-v4'

пример

 dependencies { compile('com.commonsware.cwac:camera-v9:0.5.4') { exclude module: 'support-v4' } compile 'com.android.support:support-v4:18.0.+' }