в моем текущем проекте они недоступны.
Предполагается, что они недоступны, потому что эти файлы зависимостей не являются частью вашего проекта приложения.
Если вы хотите, чтобы доступ к этим банкам зависел от вашего библиотечного модуля myLibrary
, вам нужно указать их внутри вашего app
проекта, используя
compile fileTree(dir: '../myLibrary/libs', include: '*.jar')
compile fileTree(dir: "../myLibrary/native", include: 'native.jar')
и изменить myLibrary
настройки должны быть
provided fileTree(dir: 'libs', include: '*.jar')
provided fileTree(dir: "$buildDir/native", include: 'native.jar')
Выполнив вышеизложенное, вы сможете получить доступ к своим банкам из модуля приложения, и не будет никаких дублирующих классов, вызывающих конфликт.
Возможно, будет лучше обновить плагин Android Gradle до версии 3.0+.
Дополнительная информация о версиях плагина Android Gradle:
- https://stackoverflow.com/a/51392464/8034839
- https://developer.android.com/studio/build/dependencies
Просто процитируйтеключевые пояснения здесь для вашей информации о provided
и compileOnly
:
Gradle добавляет зависимость только к пути к классам компиляции (то есть он не добавляется в выходные данные сборки).Это полезно, когда вы создаете модуль Android и вам нужна зависимость во время компиляции, но необязательно, чтобы он присутствовал во время выполнения.
Для вашего библиотечного модуля сам по себе требуется только, чтобы его зависимости былив компиляции classpath , если вы не упакуете их в свою библиотеку .jar или .aar .В этом случае приложение, использующее эту библиотеку, должно добавить эти внешние jar-файлы, зависящие от вашего библиотечного модуля, поскольку ваш библиотечный модуль не упаковал их (используя compileOnly
).И вашему приложению необходимо, чтобы эти внешние jar-файлы были доступны во время выполнения с помощью compile
.