// Path: lib_common/src/main/java/com/guiying/module/common/utils/Utils.java
// public class Utils {
// 
//     private static Context context;
// 
//     private Utils() {
//         throw new UnsupportedOperationException("u can't instantiate me...");
//     }
// 
//     /**
//      * 初始化工具类
//      *
//      * @param context 上下文
//      */
//     public static void init(Context context) {
//         Utils.context = context.getApplicationContext();
//     }
// 
//     /**
//      * 获取ApplicationContext
//      *
//      * @return ApplicationContext
//      */
//     public static Context getContext() {
//         if (context != null) return context;
//         throw new NullPointerException("u should init first");
//     }
// 
//     /**
//      * View获取Activity的工具
//      *
//      * @param view view
//      * @return Activity
//      */
//     public static
//     @NonNull
//     Activity getActivity(View view) {
//         Context context = view.getContext();
// 
//         while (context instanceof ContextWrapper) {
//             if (context instanceof Activity) {
//                 return (Activity) context;
//             }
//             context = ((ContextWrapper) context).getBaseContext();
//         }
// 
//         throw new IllegalStateException("View " + view + " is not attached to an Activity");
//     }
// 
//     /**
//      * 全局获取String的方法
//      *
//      * @param id 资源Id
//      * @return String
//      */
//     public static String getString(@StringRes int id) {
//         return context.getResources().getString(id);
//     }
// 
//     /**
//      * 判断App是否是Debug版本
//      *
//      * @return {@code true}: 是<br>{@code false}: 否
//      */
//     public static boolean isAppDebug() {
//         if (StringUtils.isSpace(context.getPackageName())) return false;
//         try {
//             PackageManager pm = context.getPackageManager();
//             ApplicationInfo ai = pm.getApplicationInfo(context.getPackageName(), 0);
//             return ai != null && (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
//         } catch (PackageManager.NameNotFoundException e) {
//             e.printStackTrace();
//             return false;
//         }
//     }
// 
// 
//     /**
//      * The {@code fragment} is added to the container view with id {@code frameId}. The operation is
//      * performed by the {@code fragmentManager}.
//      */
//     public static void addFragmentToActivity(@NonNull FragmentManager fragmentManager,
//                                              @NonNull Fragment fragment, int frameId) {
//         checkNotNull(fragmentManager);
//         checkNotNull(fragment);
//         FragmentTransaction transaction = fragmentManager.beginTransaction();
//         transaction.add(frameId, fragment);
//         transaction.commit();
//     }
// 
// 
//     public static <T> T checkNotNull(T obj) {
//         if (obj == null) {
//             throw new NullPointerException();
//         }
//         return obj;
//     }
// 
// }


import android.app.Application;
import com.guiying.module.common.utils.Utils;
import com.orhanobut.logger.LogLevel;
import com.orhanobut.logger.Logger;
import java.util.List;
package com.guiying.module.common.base;




/**
 * 要想使用BaseApplication，必须在组件中实现自己的Application，并且继承BaseApplication；
 * 组件中实现的Application必须在debug包中的AndroidManifest.xml中注册，否则无法使用；
 * 组件的Application需置于java/debug文件夹中，不得放于主代码；
 * 组件中获取Context的方法必须为:Utils.getContext()，不允许其他写法；
 *
 * @author 2016/12/2 17:02
 * @version V1.0.0
 * @name BaseApplication
 */
public class BaseApplication extends Application {

    public static final String ROOT_PACKAGE = "com.guiying.module";

    private static BaseApplication sInstance;

    private List<IApplicationDelegate> mAppDelegateList;


    public static BaseApplication getIns() {
        return sInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        Logger.init("pattern").logLevel(LogLevel.FULL);
// Path: lib_common/src/main/java/com/guiying/module/common/utils/Utils.java
// public class Utils {
// 
//     private static Context context;
// 
//     private Utils() {
//         throw new UnsupportedOperationException("u can't instantiate me...");
//     }
// 
//     /**
//      * 初始化工具类
//      *
//      * @param context 上下文
//      */
//     public static void init(Context context) {
//         Utils.context = context.getApplicationContext();
//     }
// 
//     /**
//      * 获取ApplicationContext
//      *
//      * @return ApplicationContext
//      */
//     public static Context getContext() {
//         if (context != null) return context;
//         throw new NullPointerException("u should init first");
//     }
// 
//     /**
//      * View获取Activity的工具
//      *
//      * @param view view
//      * @return Activity
//      */
//     public static
//     @NonNull
//     Activity getActivity(View view) {
//         Context context = view.getContext();
// 
//         while (context instanceof ContextWrapper) {
//             if (context instanceof Activity) {
//                 return (Activity) context;
//             }
//             context = ((ContextWrapper) context).getBaseContext();
//         }
// 
//         throw new IllegalStateException("View " + view + " is not attached to an Activity");
//     }
// 
//     /**
//      * 全局获取String的方法
//      *
//      * @param id 资源Id
//      * @return String
//      */
//     public static String getString(@StringRes int id) {
//         return context.getResources().getString(id);
//     }
// 
//     /**
//      * 判断App是否是Debug版本
//      *
//      * @return {@code true}: 是<br>{@code false}: 否
//      */
//     public static boolean isAppDebug() {
//         if (StringUtils.isSpace(context.getPackageName())) return false;
//         try {
//             PackageManager pm = context.getPackageManager();
//             ApplicationInfo ai = pm.getApplicationInfo(context.getPackageName(), 0);
//             return ai != null && (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
//         } catch (PackageManager.NameNotFoundException e) {
//             e.printStackTrace();
//             return false;
//         }
//     }
// 
// 
//     /**
//      * The {@code fragment} is added to the container view with id {@code frameId}. The operation is
//      * performed by the {@code fragmentManager}.
//      */
//     public static void addFragmentToActivity(@NonNull FragmentManager fragmentManager,
//                                              @NonNull Fragment fragment, int frameId) {
//         checkNotNull(fragmentManager);
//         checkNotNull(fragment);
//         FragmentTransaction transaction = fragmentManager.beginTransaction();
//         transaction.add(frameId, fragment);
//         transaction.commit();
//     }
// 
// 
//     public static <T> T checkNotNull(T obj) {
//         if (obj == null) {
//             throw new NullPointerException();
//         }
//         return obj;
//     }
// 
// }


// Path: lib_common/src/main/java/com/guiying/module/common/base/BaseApplication.java
import android.app.Application;
import com.guiying.module.common.utils.Utils;
import com.orhanobut.logger.LogLevel;
import com.orhanobut.logger.Logger;
import java.util.List;

package com.guiying.module.common.base;




/**
 * 要想使用BaseApplication，必须在组件中实现自己的Application，并且继承BaseApplication；
 * 组件中实现的Application必须在debug包中的AndroidManifest.xml中注册，否则无法使用；
 * 组件的Application需置于java/debug文件夹中，不得放于主代码；
 * 组件中获取Context的方法必须为:Utils.getContext()，不允许其他写法；
 *
 * @author 2016/12/2 17:02
 * @version V1.0.0
 * @name BaseApplication
 */
public class BaseApplication extends Application {

    public static final String ROOT_PACKAGE = "com.guiying.module";

    private static BaseApplication sInstance;

    private List<IApplicationDelegate> mAppDelegateList;


    public static BaseApplication getIns() {
        return sInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        Logger.init("pattern").logLevel(LogLevel.FULL);
        Utils.init(this);