LoginSignup
7
7

More than 5 years have passed since last update.

Daggerとproduct flavorを使って、RetrofitのCall.Factoryをビルドごとに切り替える

Last updated at Posted at 2016-02-16

Retrofit 2.0-beta4を使用。

mainに定義

AppComponent.java
@Singleton
@Component(modules = {
    AppModule.class,
    NetworkModule.class
})
public interface AppComponent {

}
AppModule.java
@Module
public class AppModule {

    @Singleton
    @Provides
    public Retrofit.Builder provideRetrofitBuilder(Call.Factory callFactory, Converter.Factory converterFactory) {
        return new Retrofit.Builder()
                .baseUrl(context.getString(R.string.host))
                .callFactory(callFactory)
                .addConverterFactory(converterFactory)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create());
    }

    @Singleton
    @Provides
    public Converter.Factory provideConverterFactory() {
        return GsonConverterFactory.create();
    }
}

mock

NetworkModule.java
@Module
public class NetworkModule {

    @Singleton
    @Provides
    public Call.Factory provideCallFactory(Context context) {
        return new MockCallFactory(context);
    }
}

※ MockCallFactoryはokhttp3.Call及びokhttp3.Call.Factoryを自前で実装。

staging

NetworkModule.java
@Module
public class NetworkModule {

    @Singleton
    @Provides
    public Call.Factory provideCallFactory() {
        return new OkHttpClient.Builder()
                .addInterceptor(LoggingInterceptor.create())
                .build();
    }
}

production

NetworkModule.java
@Module
public class NetworkModule {

    @Singleton
    @Provides
    public Call.Factory provideCallFactory() {
        return new OkHttpClient.Builder()
                .build();
    }
}

参考

Leveraging product flavors in Android Studio for hermetic testing
隔離された環境でテストを行うために Android Studio でプロダクト フレーバーを活用する

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7