Skip to content
Snippets Groups Projects

preparing iOS release

Merged Martin Finkel requested to merge mfkl/vlc-unity:ios-release into master
@@ -54,6 +54,36 @@ public void OnPreprocessBuild(BuildTarget target, string path)
ConfigureUWPNativePlugins();
ConfigureWindowsNativePlugins();
ConfigureAndroidNativePlugins();
ConfigureLibVLCSharp();
}
static void ConfigureLibVLCSharp()
{
var libvlcsharpDlls = PluginImporter.GetAllImporters().Where(pi => pi.assetPath.EndsWith("LibVLCSharp.dll")).ToList();
foreach(var pi in libvlcsharpDlls)
{
if(pi.assetPath.Contains(IOS_PATH))
{
pi.SetCompatibleWithAnyPlatform(false);
pi.SetCompatibleWithEditor(false);
pi.SetCompatibleWithPlatform(BuildTarget.iOS, true);
}
else
{
foreach(BuildTarget platform in System.Enum.GetValues(typeof(BuildTarget)))
{
if(platform != BuildTarget.iOS)
{
pi.SetCompatibleWithPlatform(platform, true);
}
}
pi.SetCompatibleWithAnyPlatform(false);
pi.SetCompatibleWithEditor(true);
pi.SetCompatibleWithPlatform(BuildTarget.iOS, false);
}
pi.SaveAndReimport();
}
}
void ConfigureWindowsNativePlugins()
@@ -217,11 +247,16 @@ internal static void CopyAndReplaceDirectory(string srcPath, string dstPath)
[PostProcessBuildAttribute(1)]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.StandaloneOSX)
OnPostprocessBuildMac(path);
if (buildTarget == BuildTarget.StandaloneOSX || buildTarget == BuildTarget.iOS)
{
OnPostprocessBuildMac(buildTarget, path);
#if UNITY_IPHONE
OnPostprocessBuildiPhone(path);
#endif
}
}
internal static void OnPostprocessBuildMac(string path)
internal static void OnPostprocessBuildMac(BuildTarget buildTarget, string path)
{
PluginImporter[] importers = PluginImporter.GetAllImporters();
var isArm64Host = RuntimeInformation.ProcessArchitecture == Architecture.Arm64;
@@ -238,19 +273,31 @@ internal static void OnPostprocessBuildMac(string path)
if(pi.GetCompatibleWithAnyPlatform() || !pi.GetCompatibleWithPlatform(BuildTarget.StandaloneOSX))
{
pi.SetCompatibleWithAnyPlatform(false);
pi.SetCompatibleWithEditor(true);
pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, true);
dirty = true;
}
// AnyCPU / macOS universal binary is not yet supported.
var isEditorCompatible = pi.GetCompatibleWithEditor();
if(pi.assetPath.Contains($"{MACOS_PATH}/ARM64/"))
{
if(pi.GetCompatibleWithEditor())
if(isArm64Host)
{
pi.SetCompatibleWithEditor(isArm64Host);
dirty = true;
if(!isEditorCompatible)
{
pi.SetCompatibleWithEditor(true);
dirty = true;
}
}
else
{
if(isEditorCompatible)
{
pi.SetCompatibleWithEditor(false);
dirty = true;
}
}
if(pi.GetPlatformData(BuildTarget.StandaloneOSX, "CPU") != "ARM64")
{
@@ -260,10 +307,21 @@ internal static void OnPostprocessBuildMac(string path)
}
else if(pi.assetPath.Contains($"{MACOS_PATH}/x86_64/"))
{
if(!pi.GetCompatibleWithEditor())
if(!isArm64Host)
{
pi.SetCompatibleWithEditor(!isArm64Host);
dirty = true;
if(!isEditorCompatible)
{
pi.SetCompatibleWithEditor(true);
dirty = true;
}
}
else
{
if(isEditorCompatible)
{
pi.SetCompatibleWithEditor(false);
dirty = true;
}
}
if(pi.GetPlatformData(BuildTarget.StandaloneOSX, "CPU") != "x86_64")
{
@@ -278,7 +336,7 @@ internal static void OnPostprocessBuildMac(string path)
}
}
if(path.EndsWith(".app"))
if(path.EndsWith(".app") || buildTarget != BuildTarget.StandaloneOSX)
{
// "Create XCode Project" is unchecked
return;
@@ -330,17 +388,8 @@ internal static void OnPostprocessBuildMac(string path)
}
#if UNITY_IPHONE
[PostProcessBuildAttribute(1)]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.iOS)
OnPostprocessBuildiPhone(path);
}
internal static void AddIOSPlugin(PBXProject proj, string target, string plugin)
{
// Debug.Log("BUILD POSTPROCESS: adding plugin " + plugin);
string fileName = Path.GetFullPath(plugin);
string fileRef = proj.AddFile(fileName, plugin, PBXSourceTree.Source);
proj.AddFileToEmbedFrameworks(target, fileRef);
Loading