// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Standard Library using System.IO; // Unity using UnityEditor; using UnityEditor.Callbacks; #if UNITY_IOS // Unity iOS is for Editor mode using UnityEditor.iOS.Xcode; #endif // GameKit using AWS.GameKit.Common; namespace AWS.GameKit.Editor { /// /// This class describes steps to be taken after the player is built. /// public class PostBuild { private const string CERTIFICATES_BUILD_PATH = "Data/Security/Certs/"; /// /// Post build step for a specific target. /// /// The target to perform the post build step for. /// Path to the built project. [PostProcessBuild] public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) { if (target == BuildTarget.iOS) OnPostprocessBuildIOS(pathToBuiltProject); } private static void OnPostprocessBuildIOS(string pathToBuiltProject) { #if UNITY_IOS // Unity iOS is for Editor mode string xcodeProjectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject); PBXProject xcodeProject = new PBXProject(); xcodeProject.ReadFromString(File.ReadAllText(xcodeProjectPath)); string unityFrameworkTarget = xcodeProject.GetUnityFrameworkTargetGuid(); Directory.CreateDirectory(Path.Combine(pathToBuiltProject, CERTIFICATES_BUILD_PATH)); string[] certificatesToCopy = new string[] { "cacert.pem" }; for(int i = 0 ; i < certificatesToCopy.Length ; ++i) { string srcPath = Path.Combine(GameKitPaths.Get().PACKAGES_CERTIFICATES_FULL_PATH, certificatesToCopy[i]); string dstLocalPath = CERTIFICATES_BUILD_PATH + certificatesToCopy[i]; string dstPath = Path.Combine(pathToBuiltProject, dstLocalPath); File.Copy(srcPath, dstPath, true); } // Compile with the newest version of libz xcode has available xcodeProject.AddBuildProperty(unityFrameworkTarget, "OTHER_LDFLAGS", "-lz"); File.WriteAllText(xcodeProjectPath, xcodeProject.WriteToString()); #endif } } }