Как предотвратить дублирование зависимостей в Android Archive Library

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

Я придерживался мнения, что библиотеки Android являются самостоятельными объектами, и поэтому содержимое одной библиотеки не должно влиять на работу другой. Вот почему у нас есть пространство имен и наименования пакетов, но, черт возьми, я не прав.

У меня есть два файла AAR, которые я импортировал в свой проект Android. AAR-файлы, а именно A и B, находятся в моей папке libs и добавляются в gradle как таковые

compile (name: 'A', ext: 'aar);
compile (name: 'B', ext: 'aar);

Все было прекрасно, пока я не попытался построить свой проект, а потом все пошло к черту.

Библиотека А имеет структуру

android.fpi
        MtGpio.class

Так ли библиотека B

android.fpi
         MtGpio.class

В идеале, это абсолютно разные библиотеки, и если они имеют одинаковые файлы или структуру, это не должно быть проблемой. Но это, я получил удар с:

app:transformClassesWithJarMergingForDebug
com.................................ZipException: duplicate entry: android/fpi/MtGpio.class

я прибегал ко всевозможным решениям, которые я читал о SO, но я все еще ищу решение, которое работает.

Что я пробовал?

  1. MultiDexEnable true;

  2. При добавлении второй библиотеки aar в файл grable я попытался исключить класс, как показано ниже, но все равно получаю ту же ошибку.

     compile (name: 'B', ext: 'aar'){
         exclude group: 'com.android.fpi', module: 'MtGpio'
      }
    
  3. Несколько других решений, которые в основном связаны с support-v4 yada yada

Теперь я обращаюсь к виртуозам Android за помощью. Заранее спасибо.

1 ответ

Возможно, вы поможете одним из ответов в Разрешенных версиях для приложения (22.0.0) и тестового приложения (21.0.3)

попытаться установить

configurations.all {
  resolutionStrategy {
    force (name: 'A', ext: 'aar')
  }
}

до dependencies

Другие вопросы по тегам