1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #if UNITY_IOS && UNITY_2017_1_OR_NEWER
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using UnityEngine;
- using UnityEditor;
- using UnityEditor.Callbacks;
- using UnityEditor.iOS.Xcode;
- using UnityEditor.iOS.Xcode.Extensions;
- //-----------------------------------------------------------------------------
- // Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
- //-----------------------------------------------------------------------------
- namespace RenderHeads.Media.AVProMovieCapture.Editor
- {
- public class PostProcessBuild_iOS
- {
- [PostProcessBuild]
- public static void ModifyProject(BuildTarget buildTarget, string path)
- {
- if (buildTarget != BuildTarget.iOS)
- return;
- string projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
- PBXProject project = new PBXProject();
- project.ReadFromFile(projectPath);
- #if UNITY_2019_3_OR_NEWER
- string targetGuid = project.GetUnityMainTargetGuid();
- #else
- string targetGuid = project.TargetGuidByName(PBXProject.GetUnityTargetName());
- #endif
- string fileGuid = project.FindFileGuidByProjectPath("Frameworks/Plugins/RenderHeads/AVProMovieCapture/Runtime/Plugins/iOS/AVProMovieCapture.framework");
- if (fileGuid != null)
- {
- PBXProjectExtensions.AddFileToEmbedFrameworks(project, targetGuid, fileGuid);
- }
- else
- {
- Debug.LogWarning("Failed to find AVProMovieCapture.framework in the generated project. You will need to manually set AVProMovieCapture.framework to 'Embed & Sign' in the Xcode project's framework list.");
- }
- project.SetBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");
- project.WriteToFile(projectPath);
- }
- [PostProcessBuild]
- public static void ModfifyPlist(BuildTarget buildTarget, string path)
- {
- if (buildTarget != BuildTarget.iOS)
- return;
- string plistPath = Path.Combine(path, "Info.plist");
- if (!File.Exists(plistPath))
- {
- Debug.LogWarning(@"Unable to locate Info.plist, you may need to add the following keys yourself:
- NSPhotoLibraryUsageDescription,
- NSPhotoLibraryAddUsageDescription");
- return;
- }
- Debug.Log("Modifying the Info.plist file at: " + plistPath);
- PlistDocument plist = new PlistDocument();
- plist.ReadFromFile(plistPath);
- PlistElementDict rootDict = plist.root;
- // Enable file sharing so that files can be pulled off of the device with iTunes
- rootDict.SetBoolean("UIFileSharingEnabled", true);
- // Enable this so that the files app can access the captured movies
- rootDict.SetBoolean("LSSupportsOpeningDocumentsInPlace", true);
- SerializedObject settings = Settings.GetSerializedSettings();
- SerializedProperty propPhotoLibraryUsageDescription = settings.FindProperty("_photoLibraryUsageDescription");
- string photoLibraryUsageDescription = propPhotoLibraryUsageDescription.stringValue;
- if (photoLibraryUsageDescription != null && photoLibraryUsageDescription.Length > 0)
- {
- Debug.Log("Adding 'NSPhotoLibraryUsageDescription' to Info.plist");
- rootDict.SetString("NSPhotoLibraryUsageDescription", photoLibraryUsageDescription);
- }
- SerializedProperty propPhotoLibraryAddUsageDescription = settings.FindProperty("_photoLibraryAddUsageDescription");
- string photoLibraryAddUsageDescription = propPhotoLibraryAddUsageDescription.stringValue;
- if (photoLibraryAddUsageDescription != null && photoLibraryAddUsageDescription.Length > 0)
- {
- Debug.Log("Adding 'NSPhotoLibraryAddUsageDescription' to Info.plist");
- rootDict.SetString("NSPhotoLibraryAddUsageDescription", photoLibraryAddUsageDescription);
- }
- File.WriteAllText(plistPath, plist.WriteToString());
- Debug.Log("Finished modifying the Info.plist");
- }
- }
- }
- #endif // UNITY_IOS && UNITY_2017_1_OR_NEWER
|