我是 stackoverflow 的新手,所以如果我的问题没有得到完美解释,我很抱歉。
我当前的项目有下一个结构
core Library
| |
Library 1 Library 2
| |
applications applications
核心库是一个包含其他 2 个库的通用功能的库。
在本例中,核心库、库 1 和库 2 使用 Dagger 2 的依赖注入,并且每个库都创建自己的依赖关系图。因此,它们中的每一个都有自己的组件接口、模块和 Dagger 2 生成的类。而且它们都具有 @Inject 注释来获取所需的对象实例。
核心库使用 2 个类来与其他库建立连接。构建依赖关系图的初始值设定项类和具有返回所需对象实例的 get 方法的发布者类。
我想要完成的是制作3个aar文件,每个库一个。库 1 和库 2 使用核心库 aar。应用程序从工件存储库中获取库 1 和 2。
我当前的问题是,3 个 aar 文件中的任何一个都是 Dagger 2 生成的类。我不知道为什么。所有类都是在我构建项目时生成的,但编译后的类不在 aar 文件内。
我正在使用:
apt 'com.google.dagger:dagger-compiler:2.5'
compile 'com.google.dagger:dagger:2.5'
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://github.com/adwiv/android-fat-aar
该脚本有助于创建包含依赖项的 aar,这在许多情况下都非常方便。