作者:小晴天9927 | 来源:互联网 | 2023-02-04 22:56
我在我的类上添加注入后得到这个错误然后它给了我一个编译错误.如果我删除
@Inject static ApiService mApiService;
它工作正常
我正在使用2个应用程序类扩展MultidexApplication因为我有合并2应用程序首先使用dagger2而第二个应用程序是butterknife并且两个目录结构都是不同的并且两个应用程序相互依赖正常工作但合并后代码应用程序无法编译并给出DaggerAppComponent错误!
请帮我们解决我的疑问
我遵循以下结构
@ActivityScope
@Component(dependencies = AppComponent.class)
public interface ActivityComponent extends AppComponent {
void inject(SignInActivity activity);
}
@Singleton
@Component(modules = {ApplicationModule.class, ApiModule.class})
public interface AppComponent {
Context appContext();
Config config();
ApiService apiService();
}
@Module
public class ActivityModule {
private final Activity mActivity;
public ActivityModule(Activity activity){
mActivity = activity;
}
@Provides
public Context activityContext(){
return mActivity;
}
}
@Module
public class ApiModule {
@Provides
@Singleton
public ApiService apiService(){
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES,false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
return new Retrofit.Builder()
.baseUrl(Config.API_URL)
.addConverterFactory(JacksonConverterFactory.create(mapper))
.client(client)
.build()
.create(ApiService.class);
}
}
@Module
public class ApplicationModule {
private final App mApp;
public ApplicationModule(App app) {
mApp = app;
}
@Provides
@Singleton
public Context appContext() {
return mApp;
}
@Provides
@Singleton
public Config config() {
return new Config(mApp);
}
}
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface ActivityScope {
}
public class App extends BrowserApp {
private AppComponent mAppComponent;
@Override
public void onCreate() {
super.onCreate();
mAppCompOnent= DaggerAppComponent.builder().applicationModule(new ApplicationModule(this)).build();
}
public AppComponent getAppAppComponent() {
return mAppComponent;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
小智..
19
就我而言,我尝试过:
使缓存无效并清理项目
更改匕首的版本
在gradle.properties中添加-Pandroid.incrementalJavaCompile = false
多得多。
就我而言,唯一对我有帮助的是打开控制台“ build ”,单击“ Toggle View ”(位于控制台左侧,锤子下方),然后修复该屏幕上出现的错误。
1> 小智..:
就我而言,我尝试过:
使缓存无效并清理项目
更改匕首的版本
在gradle.properties中添加-Pandroid.incrementalJavaCompile = false
多得多。
就我而言,唯一对我有帮助的是打开控制台“ build ”,单击“ Toggle View ”(位于控制台左侧,锤子下方),然后修复该屏幕上出现的错误。
2> Fio..:
只是为了帮助那些像我一样寻求解决这个问题的人,在你的应用程序build.gradle
模块中包含以下行(替换现有的dagger2
依赖项)
// Dagger 2
implementation "com.google.dagger:dagger-android-support:2.11"
implementation "com.google.dagger:dagger:2.11"
annotationProcessor "com.google.dagger:dagger-compiler:2.11"
3> 小智..:
如果找不到符号类DaggerAppComponent,请转到:\ app \ build \ Generated 文件夹并将其删除,然后重新生成项目。