content: /*
   * Created by LuaView.
   * Copyright (c) 2017, Alibaba Group. All rights reserved.
   *
   * This source code is licensed under the MIT.
   * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
   */
  
  package com.taobao.luaview.global;
  
  import android.content.Context;
  import android.os.Build;
  
  import com.taobao.android.luaview.BuildConfig;
  
  /**
   * LuaView 全局设置
   *
   * @author song
   * @date 15/9/9
   */
  public class LuaViewConfig {
      private static boolean isDebug = BuildConfig.DEBUG;
      private static boolean isOpenDebugger = isEmulator();//目前只支持模拟器下断点调试Lua，不支持真机，真机环境关闭该功能
      private static boolean isLibsLazyLoad = false;//是否延迟加载Libs，如果延迟加载则只会加载用到的libs，并且只会在用到的时候才加载，不用到不加载
      private static boolean isUseLuaDC = false;//是否使用LuaDC Compiler，直接将lua代码编译成dex文件，能够加速虚拟机执行
      private static boolean isUseNoReflection = false;//是否不使用反射调用接口
      private static boolean isCachePrototype = false;//是否缓存prototype，默认不缓存
      private static boolean isAutoSetupClickEffects = false;//是否自动设置点击效果
  
      //设备标识
      private static String sTtid = null;
  
      /**
       * init luaview
       *
       * @param context
       */
      public static void init(Context context) {
          //延迟加载Libs
          LuaViewConfig.setLibsLazyLoad(true);
          //是否使用非反射方式API调用（默认为true)
          LuaViewConfig.setUseNoReflection(true);
      }
  
      public static boolean isDebug() {
          return isDebug;
      }
  
      public static boolean isOpenDebugger() {
          return isOpenDebugger;
      }
  
      public static boolean isLibsLazyLoad() {
          return isLibsLazyLoad;
      }
  
      public static boolean isUseLuaDC() {
          return isUseLuaDC;
      }
  
      /**
       * 判断当前设备是否是模拟器。如果返回TRUE，则当前是模拟器，不是返回FALSE
       *
       * @return
       */
      private static boolean isEmulator() {
          return isRunningOnGenymotion() || isRunningOnStockEmulator();
      }
  
      private static boolean isRunningOnGenymotion() {
          return Build.FINGERPRINT.contains("vbox");
      }
  
      private static boolean isRunningOnStockEmulator() {
          return Build.FINGERPRINT.contains("generic");
      }
  
      /**
       * 获取ttid
       *
       * @return
       */
      public static String getTtid() {
          return sTtid != null ? sTtid : "999999@taobao_android_1.0";
      }
  
      /**
       * 设置 ttid
       *
       * @param ttid
       */
      public static void setTtid(String ttid) {
          sTtid = ttid;
      }
  
      /**
       * 全局是否debug
       *
       * @param debug
       */
      public static void setDebug(boolean debug) {
          isDebug = debug;
      }
  
      /**
       * 设置是否开启调试器用于断点调试
       *
       * @param openDebugger
       */
      public static void setOpenDebugger(boolean openDebugger) {
          isOpenDebugger = openDebugger;
      }
  
      /**
       * 是否延迟加载libs，如果设置为true的话则会在运行的时候才会加载用户lib，而不是初始化虚拟机的时候加载
       *
       * @param lazyLoad
       */
      public static void setLibsLazyLoad(boolean lazyLoad) {
          isLibsLazyLoad = lazyLoad;
      }
  
      /**
       * 是否使用LuaDC Loader，可以直接lua to dex bytecode
       */
      public static void setUseLuaDC(boolean useLuaDC) {
          isUseLuaDC = useLuaDC;
      }
  
      /**
       * 设置不使用反射
       *
       * @param useNoReflection
       */
      public static void setUseNoReflection(boolean useNoReflection) {
          isUseNoReflection = useNoReflection;
      }
  
      public static boolean isUseNoReflection() {
          return isUseNoReflection;
      }
  
      /**
       * 是否缓存prototype
       */
      public static void setCachePrototype(boolean cachePrototype) {
          isCachePrototype = cachePrototype;
      }
  
      public static boolean isCachePrototype() {
          return isCachePrototype;
      }
  
      /**
       * 是否自动设置ripple effects
       *
       * @param isAutoSetupClickEffects
       */
      public static void setAutoSetupClickEffects(boolean isAutoSetupClickEffects) {
          LuaViewConfig.isAutoSetupClickEffects = isAutoSetupClickEffects;
      }
  
      public static boolean isAutoSetupClickEffects() {
          return isAutoSetupClickEffects;
      }
  }
  