Esempio n. 1
0
    public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
    {
#if UNITY_5
        if (target != BuildTarget.iOS)
        {
#else
        if (target != BuildTarget.iPhone)
        {
#endif
            Debug.LogWarning("Target is not iPhone. XCodePostProcess will not run");
            return;
        }

        if (string.IsNullOrEmpty(config_path))
        {
            config_path = Application.dataPath + "/Res/Template/IOSConfig/XYFYSMYYSDK_Test";
        }
        XCConfigItem configItem = XCConfigItem.ParseXCConfig(config_path);
        if (configItem != null)
        {
            File.WriteAllText(Application.dataPath + "/ios_pack.txt", "config_path is " + config_path);
            configItem.EditProject(pathToBuiltProject);
        }
        else
        {
            File.WriteAllText(Application.dataPath + "/ios_error.txt", "config_path is null");
        }
    }
Esempio n. 2
0
    public static XCConfigItem ParseXCConfig(string path)
    {
        if (!path.CustomEndsWith(".json"))
        {
            path += ".json";
        }
        if (!File.Exists(path))
        {
            return(null);
        }
        Hashtable    datastore = (Hashtable)XUPorterJSON.MiniJSON.jsonDecode(File.ReadAllText(path));
        XCConfigItem item      = new XCConfigItem();
        ArrayList    includes  = datastore["includes"] as ArrayList;

        for (int i = 0; i < includes.Count; ++i)
        {
            item.includes.Add(includes[i].ToString());
        }
        item.channel           = datastore["channel"].ToString();
        item.game_name         = datastore["game_name"].ToString();
        item.code_sign         = datastore["code_sign"].ToString();
        item.provision_profile = datastore["provision_profile"].ToString();
        item.dev_team          = datastore["dev_team"].ToString();
        item.external_call     = datastore["external_call"].ToString();
        item.bundleIdentifier  = datastore["bundle_identifier"].ToString();
        item.product_name      = datastore["product_name"].ToString();
        item.app_icon          = datastore["app_icon"].ToString();
        ArrayList code_edit_items = datastore["code_edit"] as ArrayList;

        for (int i = 0; i < code_edit_items.Count; ++i)
        {
            CodeEditItem editItem = new CodeEditItem();
            Hashtable    config   = code_edit_items[i] as Hashtable;
            if (config != null)
            {
                string type = config["type"].ToString();
                if (type == "write")
                {
                    editItem.type = CodeEditItem.EditType.WriteBelow;
                }
                else if (type == "replace")
                {
                    editItem.type = CodeEditItem.EditType.Replace;
                }
                editItem.key = config["key"].ToString();
                ArrayList     values = config["value"] as ArrayList;
                StringBuilder sb     = new StringBuilder();
                for (int j = 0; j < values.Count; ++j)
                {
                    sb.Append(values[j].ToString());
                }
                editItem.value = sb.ToString();
            }
            item.codeEditList.Add(editItem);
        }
        return(item);
    }
Esempio n. 3
0
    void BuildPlayer(bool packAllRes, bool forceUpdate)
    {
        var option = BuildOptions.None;

        if (debug)
        {
            option |= BuildOptions.AllowDebugging;
        }
        if (development)
        {
            option |= BuildOptions.Development;
        }
        if (autoConnectProfile)
        {
            option |= BuildOptions.ConnectWithProfiler;
        }
        var temps = Apk_Save_Path.Replace("\\", "/").Split('/');

        if ((ABPackHelper.GetBuildTarget() == BuildTarget.Android ||
             ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows64 ||
             ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows) &&
            sdkConfig != null)
        {
            string lastChannel = string.Empty;
            for (int i = 0; i < sdkConfig.items.Count; ++i)
            {
                StringBuilder final_path = new StringBuilder();
                for (int j = 0; j < temps.Length - 1; ++j)
                {
                    final_path.Append(temps[j] + "/");
                }
                var item = sdkConfig.items[i];
                if (item.need_subpack == 0 && !packAllRes)
                {
                    continue;
                }
                if (ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows64 || ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows)
                {
                    final_path.Append(DateTime.Now.ToString("yyyyMMdd") + "/");
                    if (!Directory.Exists(final_path.ToString()))
                    {
                        Directory.CreateDirectory(final_path.ToString());
                    }
                    final_path.Append(item.game_name + "_v");
                }
                else
                {
                    if (packAllRes)
                    {
                        if (item.development == 1)
                        {
                            option |= BuildOptions.Development;
                            final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_allpack_dev_v");
                        }
                        else if (item.use_sdk == 1)
                        {
                            final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_allpack_sdk_v");
                        }
                        else
                        {
                            final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_allpack_test_v");
                        }
                    }
                    else
                    {
                        if (item.development == 1)
                        {
                            option |= BuildOptions.Development;
                            final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_subpack_dev_v");
                        }
                        else if (item.use_sdk == 1)
                        {
                            final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_subpack_sdk_v");
                        }
                        else
                        {
                            final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_subpack_test_v");
                        }
                    }
                }
                final_path.Append(gameVersion.ToString());
                if (ABPackHelper.GetBuildTarget() == BuildTarget.Android)
                {
                    final_path.Append(".apk");
                    if (File.Exists(final_path.ToString()))
                    {
                        File.Delete(final_path.ToString());
                    }
                    // 写入并保存sdk启用配置
                    item.CopyConfig();
                    item.CopySDK();
                    item.SetPlayerSetting(sdkConfig.splash_image);
                    item.SaveSDKConfig();
                    item.SplitAssets(sdkConfig.split_assets);
                    IncreaseLEBIAN_VERCODE(forceUpdate, item.update_along);
                    if (item.update_along == 0 && forceUpdate)
                    {
                        if (Directory.Exists(Application.streamingAssetsPath))
                        {
                            Directory.Delete(Application.streamingAssetsPath, true);
                        }
                    }
                }
                else if (ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows64 || ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows)
                {
                    final_path.Append(".exe");
                    if (Directory.Exists(final_path.ToString()))
                    {
                        Directory.Delete(final_path.ToString(), true);
                    }
                    item.CopyConfig();
                }
                AssetDatabase.Refresh();
                BuildPipeline.BuildPlayer(ABPackHelper.GetBuildScenes(), final_path.ToString(), ABPackHelper.GetBuildTarget(), option);
                AssetDatabase.Refresh();
                item.ClearSDK();

                SVNHelper.UpdateAll();
            }
        }
        else if (ABPackHelper.GetBuildTarget() == BuildTarget.iOS)
        {
            // 在上传目录新建一个ios_check.txt文件用于判断当前包是否出于提审状态
            string checkFile = ABPackHelper.ASSET_PATH + LuaConst.osDir + "/ios_check.txt";
            if (File.Exists(checkFile))
            {
                File.Delete(checkFile);
            }
            File.WriteAllText(checkFile, "1");

            XCConfigItem configItem = XCConfigItem.ParseXCConfig(XCodePostProcess.config_path);
            if (configItem != null)
            {
                PlayerSettings.applicationIdentifier = configItem.bundleIdentifier;
                PlayerSettings.productName           = configItem.product_name;
                configItem.CopyConfig();
            }
            IOSGenerateHelper.IOSConfusing();
            AssetDatabase.Refresh();
            BuildPipeline.BuildPlayer(ABPackHelper.GetBuildScenes(), Apk_Save_Path, ABPackHelper.GetBuildTarget(), option);
            AssetDatabase.Refresh();
        }

        Resources.UnloadUnusedAssets();
        GC.Collect();

        Debug.Log("<color=green>Build success!</color>");
    }
Esempio n. 4
0
        protected string BuildApp(bool packAllRes, bool forceUpdate)
        {
            Builder.AddBuildLog("Build App Start !... packAllRes:" + packAllRes + ",force update:" + forceUpdate);

            var option = BuildOptions.None;

            if (Builder.IsDebug)
            {
                option |= BuildOptions.AllowDebugging;
            }
            if (Builder.IsBuildDev)
            {
                option |= BuildOptions.Development;
            }
            if (Builder.IsAutoConnectProfile)
            {
                option |= BuildOptions.ConnectWithProfiler;
            }

            string dir      = Path.GetDirectoryName(Builder.ApkSavePath);
            string fileName = Path.GetFileNameWithoutExtension(Builder.ApkSavePath);
            string time     = DateTime.Now.ToString("yyyyMMdd");
            string flag     = string.Empty;

            BuildTarget buildTarget = EditorUserBuildSettings.activeBuildTarget;
            string      final_path  = string.Empty;

            if (buildTarget != BuildTarget.iOS)
            {
                SDKConfig curSdkConfig = Builder.CurrentConfigSDK;
                for (int i = 0; i < curSdkConfig.items.Count; i++)
                {
                    var item = Builder.CurrentConfigSDK.items[i];

                    BuildOptions targetOptions = option;
                    if (item.development == 1)
                    {
                        targetOptions |= BuildOptions.Development;
                        flag           = packAllRes ? "_allpack_dev_v" : "_subpack_dev_v";
                    }
                    else if (item.use_sdk == 1)
                    {
                        flag = packAllRes ? "_allpack_sdk_v" : "_subpack_sdk_v";
                    }
                    else
                    {
                        flag = packAllRes ? "_allpack_test_v" : "_subpack_test_v";
                    }


                    if (buildTarget == BuildTarget.Android)
                    {
                        final_path = string.Concat(dir, "/", fileName, "_", time, flag, Builder.GameVersion.ToString(), ".apk");
                        if (File.Exists(final_path))
                        {
                            File.Delete(final_path);
                        }
                        // 写入并保存sdk启用配置
//                        item.CopyConfig();
//                        item.CopySDK();
//                        item.SetPlayerSetting(curSdkConfig.splash_image);
//                        item.SaveSDKConfig();
                        //item.SplitAssets(sdkConfig.split_assets);
                        if (item.update_along == 0 && forceUpdate)
                        {
                            if (Directory.Exists(Application.streamingAssetsPath))
                            {
                                Directory.Delete(Application.streamingAssetsPath, true);
                            }
                        }
                    }
                    else if (buildTarget == BuildTarget.StandaloneWindows64 || buildTarget == BuildTarget.StandaloneWindows)
                    {
                        final_path = string.Concat(dir, "/", fileName, "_", time, flag, Builder.GameVersion.ToString(), ".exe");
                        if (Directory.Exists(final_path))
                        {
                            Directory.Delete(final_path, true);
                        }

                        item.CopyConfig();
                    }
                    AssetDatabase.Refresh();

                    BuildUtil.SwapPathDirectory(final_path);

                    BuildPipeline.BuildPlayer(GetBuildScenes(), final_path, buildTarget, targetOptions);
                    item.ClearSDK();
                }
            }
            else if (buildTarget == BuildTarget.iOS)
            {
                // 在上传目录新建一个ios_check.txt文件用于判断当前包是否出于提审状态
                string checkFile = BuilderPreference.ASSET_PATH + "/ios_check.txt";
                if (File.Exists(checkFile))
                {
                    File.Delete(checkFile);
                }
                File.WriteAllText(checkFile, "1");

                XCConfigItem configItem = XCConfigItem.ParseXCConfig(XCodePostProcess.config_path);
                if (configItem != null)
                {
                    PlayerSettings.applicationIdentifier = configItem.bundleIdentifier;
                    PlayerSettings.productName           = configItem.product_name;
                    configItem.CopyConfig();
                }
                //                IOSGenerateHelper.IOSConfusing();
                AssetDatabase.Refresh();
                BuildPipeline.BuildPlayer(GetBuildScenes(), Builder.ApkSavePath, buildTarget, option);
            }

            Resources.UnloadUnusedAssets();
            GC.Collect();

            Builder.AddBuildLog("[end]Build App Finish !...");
            return(final_path);
        }