// 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
}
}
}