Я работаю в проекте, который имеет 3 модуля, как показано ниже:
Project
|
|-- Common
|
|-- SDK
|
|-- App
Common
- это модуль библиотеки Android, от которого зависят все остальные модули, но мне не нужно его публиковатьв любом месте, потому что он содержит только общий код для других модулей.С другой стороны, SDK
- это еще один проект библиотеки Android, который должен быть опубликован в нашей внутренней артефакте.
App
- пример проекта SDK.Я могу опубликовать артефакт SDK
без проблем, но когда я импортирую его в клиентское приложение, компиляция завершается неудачно, потому что ни один из классов из модуля Common
не найден.
Для третьей сторонызависимости, от которых зависит модуль SDK, я использую implementation
(например, implementation 'com.squareup.okhttp3:okhttp:3.11.0'
, и все эти зависимости успешно добавляются в файл SDK
POM) и для зависимости от модуля Common
, который я использую implementation project(path: ':Common')
.
В клиентском приложении, которое импортирует библиотеку SDK
, компилятор показывает следующую ошибку
Error: cannot access Foo
class file for com.acme.Foo not found
(Foo является классом в модуле Common)
Почему при импортеSDK
ни один из классов из модуля Common
не найден?Я ожидаю, что компилятор объединит два модуля в один.Кто-нибудь знает, как я могу решить эту проблему?
(я знаю, что решение - это опубликовать Common
на артефакте, но я не хочу этого делать, поскольку это только внутренний общий код).