Мой текущий проект имеет следующую структуру core Library
| |
Library 1 Library 2
| |
applications applications
Основная библиотека — это библиотека, которая содержит общие функции для двух других библиотек.
В этом случае базовая библиотека, библиотеки 1 и 2 используют внедрение зависимостей. с Dagger 2, и каждый из них создает свой собственный граф зависимостей. Таким образом, каждый из них имеет свой собственный компонентный интерфейс, модули и классы, сгенерированные Dagger 2. Также все они имеют аннотации @Inject для получения необходимых экземпляров объектов.
основная библиотека использует 2 класса для установления соединения с другими библиотеками. Класс инициализатора, который строит граф зависимостей, и класс издателя, который имеет методы get, возвращающие необходимые экземпляры объектов.
Я хочу создать 3 файла aar, по одному для каждой библиотеки. . И эта библиотека 1 и 2 используют основную библиотеку aar. Приложения берут библиотеки 1 и 2 из артефактного репозитория.
Моя текущая проблема заключается в том, что в любом из трех файлов aar есть классы, сгенерированные Dagger 2. Я не уверен, почему. Все классы создаются при сборке проектов, но скомпилированные классы не находятся в файле aar.
Я использую:
apt 'com.google.dagger:dagger-compiler:2.5'
compile 'com.google.dagger
provided 'javax.annotation:jsr250-api:1.0'
gradle-2.14.1
Это пример моего издателя:
public class Publisher {
@Inject
ReceiversManager receiversManager;
@Inject
NetworkManager networkManager;
@Inject
HttpRequestManager httpRequestManager;
public ReceiversManager getReceiversManager(){
return receiversManager;
}
public NetworkManager getNetworkManager() {
return networkManager;
}
public HttpRequestManager getHttpRequestManager() {
return httpRequestManager;
}
public Publisher(){
Initializer.getComponent().inject(this);
}
}
Подробнее здесь: https://stackoverflow.com/questions/390 ... ses-to-aar
Мобильная версия