android - 在库项目中使用 Dagger 2
问题描述
我正在尝试使 Dagger 2 在我的库上工作,该库用于也使用 Dagger 2 的项目中。
由于库必须是独立的,我正在尝试设置一个新的 Dagger 安装。
为此,我创建了一个 AppController 用于构建我的 AppComponent:
public class AppController extends MultiDexApplication {
@NonNull
private AppComponent mAppComponent;
private static AppController sInstance;
private static int mStatusBarHeight = -1;
public static synchronized AppController getInstance() {
return sInstance;
}
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
mAppComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
}
/*** Dependency injection ***/
public ScoAppComponent getAppComponent() {
return mAppComponent;
}}
我的应用组件:
@Singleton
@Component(modules = {VariantSpecificModule.class})
public interface AppComponent {
//Activities
void inject(StartActivity StartActivity);
void inject(Navigation navigation);
void inject(MyFragment myFragment);
void inject(BaseActivity baseActivity);
}
还有我的 AppModule:
@Module
public class AppModule {
public static final String APP_NAME = "";
private AppController mApplication;
public AppModule(AppController application) {
mApplication = application;
}
@Provides
@Singleton
AppController providesApplication() {
return mApplication;
}
@Provides
@Named("app_context")
@Singleton
Context providesApplicationContext(AppController app) {
return app.getApplicationContext();
}
@Provides
@Singleton
EventBus providesEventBus() {
return EventBus.getDefault();
}
}
我还在图书馆的 AndroidManifest.xml 中声明了我的 AppController
<application
android:name=".AppController"
tools:replace="android:name">
但我显然有一个问题:当我尝试注入我的 BaseActivity 时,我的控制器总是返回 null ...
AppController.getInstance().getAppComponent().inject(this);
有人知道如何在图书馆项目中处理匕首吗?
编辑:看起来库的 AndroidManifest 中的应用程序没有实例化,并且在应用程序和库中不可能有不同的应用程序,所以有什么技巧可以实现我的目的吗?谢谢
解决方案
推荐阅读
- mysql - 当它从未到达 COMMIT 点时,是否每个 SQL 都撤消?
- python - Sklearn DecisionTreeClassifier F-Score 每次运行的不同结果
- vb.net - VB.NET 代码中的 XML 文字似乎不适用于 #if 语句
- php - PhpStorm .phtml 格式问题
- python - 多索引+数据的条件
- java - 引起:java.nio.charset.UnsupportedCharsetException - intellij
- openshift - 当 OpenShift 应该在 pod 内运行两个不同的容器时,它会运行相同的容器两次
- git - “git diff”中同一行的两个版本
- json - jq 双反斜杠有时被删除
- php - 如何签署以编程方式生成的 iOS 配置文件?