94 lines
3.2 KiB
C#
Executable File
94 lines
3.2 KiB
C#
Executable File
#if UNITY_IOS
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEditor.Callbacks;
|
|
using UnityEditor.iOS.Xcode;
|
|
using UnityEngine;
|
|
public class IOSCredentialsPostProcess : ScriptableObject
|
|
{
|
|
public IOSCredentialsList ConfigurationsList;
|
|
|
|
[PostProcessBuild(0)]
|
|
public static void OnPostProcess(BuildTarget buildTarget, string buildPath)
|
|
{
|
|
if(buildTarget != BuildTarget.iOS)
|
|
return;
|
|
|
|
// var config = PickEntitlementsConfig();
|
|
// if(config == null)
|
|
// return;
|
|
//
|
|
// var entitlements_path = AssetDatabase.GetAssetPath(config.Entitlements);
|
|
// var proj_path = PBXProject.GetPBXProjectPath(buildPath);
|
|
// var proj = new PBXProject();
|
|
// proj.ReadFromFile(proj_path);
|
|
//
|
|
// var target_name = "Unity-iPhone";
|
|
// // var target_name = PBXProject.GetUnityTargetName();
|
|
// var target_guid = proj.TargetGuidByName(target_name);
|
|
// var file_name = Path.GetFileName(entitlements_path);
|
|
// var dst = $"{buildPath}/{target_name}/{file_name}";
|
|
// FileUtil.CopyFileOrDirectory(entitlements_path, dst);
|
|
// proj.AddFile($"{target_name}/{file_name}", file_name);
|
|
// proj.AddBuildProperty(target_guid, "CODE_SIGN_ENTITLEMENTS", $"{target_name}/{file_name}");
|
|
// AddLocalFile(buildPath, proj, target_guid, "Assets", "GoogleService-Info.plist");
|
|
// proj.WriteToFile(proj_path);
|
|
}
|
|
|
|
public static void ReplaceFirebasePlistAccordingToBundleID()
|
|
{
|
|
ReplaceFirebasePlist(PickEntitlementsConfig());
|
|
}
|
|
|
|
static void ReplaceFirebasePlist(IOSCredentialsList.Configuration config)
|
|
{
|
|
var firebase_plist_path = AssetDatabase.GetAssetPath(config.FirebasePlist);
|
|
var firebase_expected_path = $"{Application.dataPath}/GoogleService-Info.plist";
|
|
File.Copy(firebase_plist_path, firebase_expected_path, overwrite: true);
|
|
}
|
|
|
|
static void AddLocalFile(string buildPath, PBXProject proj, string targetName, string fileDir, string fileName)
|
|
{
|
|
var filePath = Path.Combine(fileDir, fileName);
|
|
File.Copy(filePath, Path.Combine(buildPath, fileName));
|
|
proj.AddFileToBuild(targetName, proj.AddFile(fileName, fileName));
|
|
}
|
|
|
|
static IOSCredentialsList.Configuration PickEntitlementsConfig()
|
|
{
|
|
var dummy = ScriptableObject.CreateInstance<IOSCredentialsPostProcess>();
|
|
|
|
try
|
|
{
|
|
string app_id = $"{Settings.IOS_TEAM_ID}.{Settings.PACKAGE_ID_FULL}";
|
|
string search_term = $"<string>{app_id}</string>";
|
|
|
|
var options = dummy.ConfigurationsList.Configurations;
|
|
|
|
for(int i = 0; i < options.Count; i++)
|
|
{
|
|
var option = options[i];
|
|
if(option == null)
|
|
continue;
|
|
|
|
var path = AssetDatabase.GetAssetPath(option.Entitlements);
|
|
string contents = File.ReadAllText(path);
|
|
if(contents.Contains(search_term))
|
|
{
|
|
Debug.Log($"Using iOS entitlements file {path} and Firebase plist {option.FirebasePlist.name}");
|
|
return option;
|
|
}
|
|
}
|
|
|
|
throw new Exception($"None of listed entitlements match current App Id '{app_id}'!");
|
|
}
|
|
finally
|
|
{
|
|
ScriptableObject.DestroyImmediate(dummy);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |