content: /**
    * Copyright 2017 JessYan
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    *
    *      http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */
  package <%= appPackage %>.di.component;
  
  import android.app.Application;
  import android.content.Context;
  
  import com.google.gson.Gson;
  import <%= appPackage %>.base.delegate.AppDelegate;
  import <%= appPackage %>.di.module.AppModule;
  import <%= appPackage %>.di.module.ClientModule;
  import <%= appPackage %>.di.module.GlobalConfigModule;
  import <%= appPackage %>.http.imageloader.ImageLoader;
  import <%= appPackage %>.integration.AppManager;
  import <%= appPackage %>.integration.IRepositoryManager;
  import <%= appPackage %>.integration.cache.Cache;
  import <%= appPackage %>.utils.ArmsUtils;
  
  import java.io.File;
  
  import javax.inject.Singleton;
  
  import dagger.Component;
  import me.jessyan.rxerrorhandler.core.RxErrorHandler;
  import okhttp3.OkHttpClient;
  
  /**
   * ================================================
   * 可通过 {@link ArmsUtils#obtainAppComponentFromContext(Context)} 拿到此接口的实现类
   * 拥有此接口的实现类即可调用对应的方法拿到 Dagger 提供的对应实例
   *
   * @see <a href="https://github.com/JessYanCoding/MVPArms/wiki#2.2">AppComponent wiki 官方文档</a>
   * Created by JessYan on 8/4/2016
   * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
   * <a href="https://github.com/JessYanCoding">Follow me</a>
   * ================================================
   */
  @Singleton
  @Component(modules = {AppModule.class, ClientModule.class, GlobalConfigModule.class})
  public interface AppComponent {
      Application application();
  
      //用于管理所有 activity
      AppManager appManager();
  
      //用于管理网络请求层,以及数据缓存层
      IRepositoryManager repositoryManager();
  
      //RxJava 错误处理管理类
      RxErrorHandler rxErrorHandler();
  
      //图片管理器,用于加载图片的管理类,默认使用 Glide ,使用策略模式,可在运行时替换框架
      ImageLoader imageLoader();
  
      OkHttpClient okHttpClient();
  
      //gson
      Gson gson();
  
      //缓存文件根目录(RxCache 和 Glide 的缓存都已经作为子文件夹放在这个根目录下),应该将所有缓存都放到这个根目录下,便于管理和清理,可在 GlobalConfigModule 里配置
      File cacheFile();
  
      //用来存取一些整个App公用的数据,切勿大量存放大容量数据
      Cache<String, Object> extras();
  
      void inject(AppDelegate delegate);
  }
  