void CheckProjectProperties()
    {
        bool   Succeed  = false;
        string filePath = env.PATH_PUGLIN_ANDROID + "/project.properties";

        if (!File.Exists(filePath))
        {
            errorMsg.Append(filePath + " isn't exits.\n\n");
            return;
        }
        Dictionary <string, string> configs = MsdkUtil.ReadConfigs(filePath);

        foreach (var config in configs)
        {
            if (config.Key.IndexOf("android.library.reference") != -1)
            {
                if (config.Value.Equals("./MSDKLibrary"))
                {
                    // 检查成功
                    Succeed = true;
                }
            }
        }
        if (!Succeed)
        {
            errorMsg.Append("project.properties configuration error. "
                            + "It should have an item like <android.library.reference1=./MSDKLibrary>.\n\n");
        }
    }
    void CheckMsdkConfig()
    {
        // 读取配置
        string filePath = env.PATH_PUGLIN_ANDROID + "/assets/msdkconfig.ini";

        if (!File.Exists(filePath))
        {
            errorMsg.Append(filePath + " isn't exits.\n\n");
            return;
        }
        Dictionary <string, string> configs = MsdkUtil.ReadConfigs(filePath);

        // 检查环境及和各模块开开关
        GetKey(configs, "MSDK_ENV", ref result.domain);
        GetKey(configs, "needNotice", ref result.notice);
        GetKey(configs, "PUSH", ref result.push);
        GetKey(configs, "SAVE_UPDATE", ref result.update);
        GetKey(configs, "GRAY_TEST_SWITCH", ref result.grayTest);
        GetKey(configs, "localLog", ref result.logLevel);
        GetKey(configs, "STAT_LOG", ref result.statLog);
        GetKey(configs, "WXTOKEN_REFRESH", ref result.refresh);
        GetKey(configs, "CLOSE_BUGLY_REPORT", ref result.closeBugly);
    }