public iOSBuildRunner() : base() { this.BuildPath = Path.Combine(BuildRunner.ProjectPath, "../Build/iOS"); this.BuildTarget = BuildTarget.iOS; this.BuildTargetGroup = BuildTargetGroup.iOS; this.BuildSdkVersion = iOSSdkVersion.DeviceSDK; }
public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget != BuildTarget.iOS) { return; } iOSSdkVersion target = PlayerSettings.iOS.sdkVersion; SetupXcFramework(path, target == iOSSdkVersion.DeviceSDK); }
static void _BuildIOSPlayer(iOSSdkVersion version, bool devMode = true) { var scenes = GetBuildPlayerScenes(devMode); // pack asset bundles into data.zip FI.TargetPlatform = "ios"; // PackFiles(); // create necessary folders for building project Directory.CreateDirectory("proj.ios/Data/Raw"); Directory.CreateDirectory("proj.ios/Libraries"); // build the xcode project // PlayerSettings.iOS.targetResolution = iOSTargetResolution.Native; PlayerSettings.iOS.sdkVersion = version; if (!devMode) { PlayerSettings.iOS.scriptCallOptimization = ScriptCallOptimizationLevel.FastButNoExceptions; } else { PlayerSettings.iOS.scriptCallOptimization = ScriptCallOptimizationLevel.SlowAndSafe; } PlayerSettings.enableCrashReportAPI = false; PlayerSettings.stripEngineCode = false; PlayerSettings.gpuSkinning = true; PlayerSettings.SetMobileMTRendering(BuildTargetGroup.iOS, true); PlayerSettings.graphicsJobs = false; PlayerSettings.accelerometerFrequency = 0; PlayerSettings.stripUnusedMeshComponents = false; // ios doesnt support antiAliasing QualitySettings.antiAliasing = 0; QualitySettings.pixelLightCount = 1; PlayerSettings.iOS.appleEnableAutomaticSigning = false; // PlayerSettings.iOS.applicationDisplayName = "荣耀飞车"; // PlayerSettings.iOS.appleDeveloperTeamID = "T7DS86KKR2"; if (devMode) { BuildPipeline.BuildPlayer(scenes, "proj.ios", BuildTarget.iOS, BuildOptions.AcceptExternalModificationsToPlayer | BuildOptions.Development); } else { BuildPipeline.BuildPlayer(scenes, "proj.ios", BuildTarget.iOS, BuildOptions.AcceptExternalModificationsToPlayer); } //bundle files are copied in package.sh //CopyAssetsToProject(); }
public void Setup() { #if UNITY_EDITOR originaliOSSDK = PlayerSettings.iOS.sdkVersion; originalRequestAuthorizationOnAppLaunch = NotificationSettings.iOSSettings.RequestAuthorizationOnAppLaunch; originalAuthorizationOptions = NotificationSettings.iOSSettings.DefaultAuthorizationOptions; originalAddRemoteNotificationCapability = NotificationSettings.iOSSettings.AddRemoteNotificationCapability; originalRequestRemoteOnLaunch = NotificationSettings.iOSSettings.NotificationRequestAuthorizationForRemoteNotificationsOnAppLaunch; PlayerSettings.iOS.sdkVersion = iOSSdkVersion.SimulatorSDK; NotificationSettings.iOSSettings.RequestAuthorizationOnAppLaunch = true; NotificationSettings.iOSSettings.DefaultAuthorizationOptions = originalAuthorizationOptions | AuthorizationOption.Provisional; NotificationSettings.iOSSettings.AddRemoteNotificationCapability = false; NotificationSettings.iOSSettings.NotificationRequestAuthorizationForRemoteNotificationsOnAppLaunch = false; #endif }
private static void Load2IOS() { companyName = Application.companyName; prodectName = Application.productName; qualityLevel = QualitySettings.GetQualityLevel(); isFullPack = PlayerPrefs.GetInt("PackManager_isFullPack", 0) == 1; targetPatch = PlayerPrefs.GetString("Editor_targetPatch", "../../" + @"\IOS\FishZoo\"); packName = PlayerSettings.GetApplicationIdentifier(buildTargetGroup); script = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS); targetOSVersion = PlayerSettings.iOS.targetOSVersionString; targetDevice = PlayerSettings.iOS.targetDevice; sdkVersion = PlayerSettings.iOS.sdkVersion; }
private static void SetiOSSDK(iOSSdkVersion sdk) { PlayerSettings.iOS.sdkVersion = sdk; switch (sdk) { case iOSSdkVersion.SimulatorSDK: PlayerSettings.SetPlatformVuforiaEnabled(BuildTargetGroup.iOS, false); PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, "TARGET_OS_SIMULATOR"); PlayerSettings.stripEngineCode = false; break; default: PlayerSettings.SetPlatformVuforiaEnabled(BuildTargetGroup.iOS, true); PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, string.Empty); PlayerSettings.stripEngineCode = true; break; } }
override protected void Build() { // quit xcode so the user isn't prompted to reload the project switch (this.BuildAction) { case iOSBuildAction.BuildAndRun: case iOSBuildAction.BuildAndArchive: this.XcodeHelper("Quit"); break; } // store intial and target sdk versions iOSSdkVersion initialSdkVersion = PlayerSettings.iOS.sdkVersion; iOSSdkVersion targetSdkVersion = this.BuildSdkVersion; // switch to the target sdk (device or simulator) if (targetSdkVersion != initialSdkVersion) { PlayerSettings.iOS.sdkVersion = targetSdkVersion; } // build base.Build(); // revert to the inital sdk if (targetSdkVersion != initialSdkVersion) { PlayerSettings.iOS.sdkVersion = initialSdkVersion; } // execute the build action via applescript switch (this.BuildAction) { case iOSBuildAction.BuildAndRun: this.XcodeHelper("Run"); break; case iOSBuildAction.BuildAndArchive: this.XcodeHelper("Archive"); break; } }
internal static void ApplySettings(iOSSdkVersion targetSDK = iOSSdkVersion.DeviceSDK, iOSTargetDevice targetDevice = iOSTargetDevice.iPhoneAndiPad, string targetOSVersionString = "8.0") { UnityEditor.PlayerSettings.iOS.sdkVersion = targetSDK; UnityEditor.PlayerSettings.iOS.targetDevice = targetDevice; UnityEditor.PlayerSettings.iOS.targetOSVersionString = targetOSVersionString; }
/// <summary> /// IOS部分对应显示 /// </summary> private void ShowIOS() { EditorGUILayout.BeginVertical(); prodectName = EditorGUILayout.TextField("项目名:", prodectName); packName = EditorGUILayout.TextField("包名:", packName); EditorGUILayout.LabelField("路径是否正确 : " + Directory.Exists(targetPatch)); targetPatch = EditorGUILayout.TextField("项目路径:", targetPatch); EditorGUILayout.LabelField("IOS设置:"); script = EditorGUILayout.TextField("项目注入:", script); targetOSVersion = EditorGUILayout.TextField("IOS版本支援:", targetOSVersion); sdkVersion = (iOSSdkVersion)EditorGUILayout.EnumPopup("目标SDK:", sdkVersion); targetDevice = (iOSTargetDevice)EditorGUILayout.EnumPopup("目标设备:", targetDevice); isFullPack = EditorGUILayout.Toggle("是否为完整导出:", isFullPack); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("读取")) { Load2IOS(); this.Repaint(); } if (GUILayout.Button("写入")) { Write2IOS(); } if (GUILayout.Button("打包(如有变更先写入)")) { var file = Build2IOS(); if (file.Length > 0) { if (EditorUtility.DisplayDialog("PackManager", "导出成功,是否导入IOS工程", "Yep", "Closs")) { if (isFullPack) { var left = targetPatch; var right = @"ForIOS\" + prodectName; try { if (Directory.Exists(left)) { Directory.Delete(left, true); } Directory.Move(right, left); if (Directory.Exists(right)) { Directory.Delete(right, true); } Directory.Delete("ForIOS", true); Assembly assembly = Assembly.GetAssembly(typeof(SceneView)); Type logEntries = assembly.GetType("UnityEditor.LogEntries"); MethodInfo clearConsoleMethod = logEntries.GetMethod("Clear"); clearConsoleMethod.Invoke(new object(), null); Debug.Log("打包完成!"); this.Close(); } catch (System.Exception e) { if (EditorUtility.DisplayDialog("PackManager", e.Message, "Closs")) { this.Close(); } } } else { var ass = targetPatch + @"\Classes"; var jl = targetPatch + @"\Data"; var lb = targetPatch + @"\Libraries"; var assnew = @"ForIOS\" + prodectName + @"\Classes"; var jlnew = @"ForIOS\" + prodectName + @"\Data"; var lbnew = @"ForIOS\" + prodectName + @"\Libraries"; try { if (Directory.Exists(ass) && Directory.Exists(jl) && Directory.Exists(lb)) { Directory.Delete(ass, true); Directory.Delete(jl, true); Directory.Delete(lb, true); } Directory.Move(assnew, ass); Directory.Move(jlnew, jl); Directory.Move(lbnew, lb); Directory.Delete("ForIOS", true); var file01 = ass + @"\UnityAppController.h"; var file02 = ass + @"\UnityAppController.mm"; if (File.Exists(file01) && File.Exists(file02)) { File.Delete(file01); File.Delete(file02); } Assembly assembly = Assembly.GetAssembly(typeof(SceneView)); Type logEntries = assembly.GetType("UnityEditor.LogEntries"); MethodInfo clearConsoleMethod = logEntries.GetMethod("Clear"); clearConsoleMethod.Invoke(new object(), null); Debug.Log("打包完成!"); this.Close(); } catch (System.Exception e) { if (EditorUtility.DisplayDialog("PackManager", e.Message, "Closs")) { this.Close(); } } } } else { this.Close(); } } } if (GUILayout.Button("关闭")) { this.Close(); } try { EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } catch (Exception) { Debug.Log("Why is always consle ?"); } }
private static void DoBuildIOSInternal(iOSBuildType buildType, iOSSdkVersion sdkVersion) { Debug.Log("Building iOS..."); CurrentGroup = BuildTargetGroup.iOS; var xrGeneralSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(BuildTargetGroup.iOS); var prevCompilerConfiguration = PlayerSettings.GetIl2CppCompilerConfiguration(BuildTargetGroup.iOS); var prevScriptingDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS); var prev_sdkVersion = PlayerSettings.iOS.sdkVersion; var isDebug = !(buildType == iOSBuildType.Debug); var disabledARKit = false; using var revertSettings = new Disposable(() => { CurrentGroup = null; PlayerSettings.iOS.sdkVersion = prev_sdkVersion; PlayerSettings.SetIl2CppCompilerConfiguration(BuildTargetGroup.iOS, prevCompilerConfiguration); if (!Application.isBatchMode) { PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, prevScriptingDefines); } if (disabledARKit) { XRPackageMetadataStore.AssignLoader( xrGeneralSettings.AssignedSettings, typeof(UnityEngine.XR.ARKit.ARKitLoader).FullName, BuildTargetGroup.iOS); } }); var compilerConfiguration = isDebug ? Il2CppCompilerConfiguration.Debug : Il2CppCompilerConfiguration.Master; PlayerSettings.SetIl2CppCompilerConfiguration(BuildTargetGroup.iOS, compilerConfiguration); PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, ProcessDefines(prevScriptingDefines, isDebug)); PlayerSettings.iOS.sdkVersion = sdkVersion; if (sdkVersion == iOSSdkVersion.SimulatorSDK && xrGeneralSettings.AssignedSettings.activeLoaders.Any(m => m.GetType() == typeof(UnityEngine.XR.ARKit.ARKitLoader))) { // ARKit is not supported on iOS Simulator - disable it temporairly XRPackageMetadataStore.RemoveLoader( xrGeneralSettings.AssignedSettings, typeof(UnityEngine.XR.ARKit.ARKitLoader).FullName, BuildTargetGroup.iOS); disabledARKit = true; } string exportPath = Path.GetFullPath(Path.Combine(ProjectPath, "../../ios/UnityExport")); string buildPath = iosBuildPath; if (Directory.Exists(buildPath)) { Directory.Delete(buildPath, true); } EditorUserBuildSettings.iOSBuildConfigType = buildType; try { var options = (buildType == iOSBuildType.Debug ? BuildOptions.AllowDebugging : BuildOptions.None); var report = BuildPipeline.BuildPlayer( GetEnabledScenes(), buildPath, BuildTarget.iOS, options ); if (report.summary.result != BuildResult.Succeeded) { throw new Exception("Build failed"); } // Clear UnityExport DeleteFolderContent(exportPath); // Copy build output to UnityExport Debug.Log("Copy to UnityExport"); CopyDirectory( buildPath, exportPath, mergeDirectories: false, overwriteFiles: true); } catch (Exception e) { Debug.Log("Export failed!"); if (Application.isBatchMode) { Debug.LogError(e); EditorApplication.Exit(-1); } else { throw; } } finally { Debug.Log("Export completed!"); if (Application.isBatchMode) { EditorApplication.Exit(0); } } }