Android Studio не видит зависимости (а Gradle знает!)

Я создал чистую библиотеку Java и скомпилировал две версии: одну затененную (с использованием плагина gradle shadow), другую - нет, и развернул их в моем локальном хранилище Nexus.

В моем проекте библиотеки Android я создал два продукта productFlavors, стандартный и затененный, которые ссылаются на соответствующие артефакты в моем хранилище Nexus. В Android Studio только стандартный вариант продукта с не затененным jar показывает библиотеки во внешних библиотеках.

Переключение на любой из вариантов теневой сборки приводит к тому, что зависимости полностью отсутствуют в Android Studio, и весь код, ссылающийся на любой из них, кажется, нарушен в AS. (При переключении вариантов сборки приходится менять синхронизацию для изменения зависимостей).

Другие зависимости, добавленные в теневую конфигурацию компиляции, такие как firebase, обнаруживаются и работают просто отлично. Так что это только одна зависимость. Ничего необычного не печатается в консоли Gradle или журнале событий.

Однако Gradle из командной строки - это совсем другая история. Запуск библиотеки./gradlew: зависимости показывает соответствующие библиотеки и их зависимости , и я могу без проблем скомпилировать и собрать свои AAR для всех вариантов из командной строки. Он работал, когда библиотека Android была подпроектом моего более крупного проекта, но, поскольку я разбил его на отдельный проект в Android Studio, похоже, он больше не работает.

Build.gradle выглядит так (исключая обычные вещи):

android {
   publishNonDefault true
   productFlavors {
      standard {}
      shadowed {}
   }
}

dependencies {
   standardCompile 'groupId:core:1.0.0-SNAPSHOT'
   shadowedCompile 'groupId:core-shadowed:1.0.0-SNAPSHOT'
}

FWIW, это использует:

Android Studio 2.3.3 Build #AI-162.4069837, built on June 6, 2017 
JRE: 1.8.0_92-b14 x86_64 
JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation 
Gradle Plugin: 2.3.3 
Gradle: 3.5
Build Tools: 25.0.3

Единственное, что я действительно смог определить, что отличается между этими двумя (помимо перемещенных пакетов и различного набора зависимостей в pom), это содержимое папки META-INF теневого фляги - интересно, может ли это быть сбивает с толку КАК? В частности, плагин shadow добавляет запись Class-Path в MANIFEST.MF, в которой перечислены файлы jar зависимостей времени выполнения, которые были исключены из толстого jar, а также папку META-INF/maven/, содержащую записи с.pom для каждого из те, а также.

0 ответов

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