예제 #1
0
    public static void DoBuildIOS()
    {
        ReactExportSettings settings = UnityEditor.AssetDatabase.LoadAssetAtPath(ExportSettingsPath, typeof(ReactExportSettings)) as ReactExportSettings;
        string exportPath            = Path.GetFullPath(Path.Combine(ProjectPath, settings.XcodeProjectRoot + "/UnityExport"));

        if (Directory.Exists(exportPath))
        {
            Directory.Delete(exportPath, true);
        }

        PlayerSettings.iOS.sdkVersion = settings.iOSBuildMode;
        EditorUserBuildSettings.iOSBuildConfigType = settings.iOSBuildType;

        // Overrding settings from comand line args
        string[] arguments      = Environment.GetCommandLineArgs();
        int      buildModeIndex = Array.FindIndex(arguments, item => item.StartsWith("buildMode="));

        if (buildModeIndex != -1)
        {
            string[] value = arguments[buildModeIndex].Split('=');
            PlayerSettings.iOS.sdkVersion = value[1] == "simulator" ? iOSSdkVersion.SimulatorSDK : iOSSdkVersion.DeviceSDK;
        }
        int buildTypeIndex = Array.FindIndex(arguments, item => item.StartsWith("buildType="));

        if (buildTypeIndex != -1)
        {
            string[] value = arguments[buildTypeIndex].Split('=');
            EditorUserBuildSettings.iOSBuildConfigType = value[1] == "debug" ? iOSBuildType.Debug : iOSBuildType.Release;
        }

        UnityEngine.Debug.LogFormat("BUILDING iOS - {0} - {1}", PlayerSettings.iOS.sdkVersion, EditorUserBuildSettings.iOSBuildConfigType);

        var options = BuildOptions.AcceptExternalModificationsToPlayer;
        var status  = BuildPipeline.BuildPlayer(
            GetEnabledScenes(),
            exportPath,
            BuildTarget.iOS,
            options
            );

        if (!string.IsNullOrEmpty(status))
        {
            throw new Exception("Build failed: " + status);
        }
    }
예제 #2
0
    public static void OnPostBuild(BuildTarget target, string pathToBuiltProject)
    {
        if (target != BuildTarget.iOS)
        {
            return;
        }

        ReactExportSettings settings = UnityEditor.AssetDatabase.LoadAssetAtPath(ExportSettingsPath, typeof(ReactExportSettings)) as ReactExportSettings;

        XcodeProjectRoot = settings.XcodeProjectRoot;
        XcodeProjectName = settings.XcodeProjectName;
        PbxFilePath      = XcodeProjectName + ".xcodeproj/project.pbxproj";

        Debug.LogFormat("Exporting project to iOS:\nprojectRoot='{0}' projectName='{1}'", XcodeProjectRoot, XcodeProjectName);
        PatchUnityNativeCode(pathToBuiltProject);
        UpdateUnityIOSExports(pathToBuiltProject);
        UpdateUnityProjectFiles(pathToBuiltProject);
    }