Intereting Posts
Как искать метод в файле в Android Studio Как вызвать приложение YouTube из My WebApp Как настроить анимацию 3d flip для дочернего элемента gridview DownloadManager COLUMN_LOCAL_FILENAME устарел Значение мигающей красной границы в эмуляторе Как я могу сделать слайд страницы, когда пользователь скользит пальцем по экрану? Android: как центрировать кнопку, программно созданную? Заполнение данных в растровом файле Android как можно быстрее от C Как ограничить специальные символы в поле Android EditText? Надежный способ узнать, когда уходит в отставку Android-клавиатура (обратный вызов, который работает на каждом телефоне) Как я могу создавать плагины / расширения Android-приложений, которые могут быть установлены как APK или с рынка? Какие файлы следует игнорировать в проекте Android на SVN Eclipse не имеет java doc для отображения информации о классе и методах. Как их прикрепить? + андроид Android App Crashes Неожиданно во время работы? Принудительная внешняя SD-карта на Android с кордовым и файловым плагином

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

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

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

Попробуйте использовать 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.+' }