我在我的类上添加注入后得到这个错误然后它给了我一个编译错误.

如果我删除

@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);

}

}

解决方法:

在我的情况下,我试过:

>使缓存无效并清理项目

>改变匕首的版本

>在gradle.properties中添加-Pandroid.incrementalJavaCompile = false

>更多.

在我的案例中唯一帮助我的是打开控制台“build”,点击“Toggle View”(在控制台左侧和锤子下方)并修复该屏幕上显示的错误.来源:https://www.icode9.com/content-4-487701.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐