Application Component + Module
@Component(modules = {
        AndroidInjectionModule.class,
        AppModule.class,
        ActivityBuilder.class})
public interface AppComponent {
    @Component.Builder
    interface Builder {
        @BindsInstance Builder application(Application application);
        AppComponent build();
    }
    void inject(AndroidSampleApp app);
}
@Module
public class AppModule {
    @Provides
    @Singleton
    Context provideContext(Application application) {
        return application;
    }
}
High-level modules:
- Android Module: Provides all Android related Objects (Resources, AssetManager...)
- Application Module: (Glide, Analytics, Stetho)
- Network Module: (Interceptors, OkHttpClient, Retrofit.....)