public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { #if UNITY_IPHONE string projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject project = new PBXProject(); project.ReadFromString(File.ReadAllText(projectPath)); // This is the project name that Unity generates for iOS, isn't editable until after post processing string target = project.TargetGuidByName(PBXProject.GetUnityTargetName()); #if UNITY_5_0 project.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks/Plugins/iOS"); #else CopyAndReplaceDirectory("Assets/Plugins/iOS/FiksuSDK.bundle", Path.Combine(path, "Frameworks/FiksuSDK.bundle")); project.AddFileToBuild(target, project.AddFile("Frameworks/FiksuSDK.bundle", "Frameworks/FiksuSDK.bundle", PBXSourceTree.Source)); CopyAndReplaceDirectory("Assets/Plugins/iOS/FiksuSDK.framework", Path.Combine(path, "Frameworks/FiksuSDK.framework")); project.AddFileToBuild(target, project.AddFile("Frameworks/FiksuSDK.framework", "Frameworks/FiksuSDK.framework", PBXSourceTree.Source)); project.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); project.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); #endif project.AddFrameworkToProject(target, "AdSupport.framework", true); project.AddFrameworkToProject(target, "StoreKit.framework", true); project.AddFrameworkToProject(target, "Security.framework", true); project.AddFrameworkToProject(target, "SystemConfiguration.framework", false); project.AddFrameworkToProject(target, "MessageUI.framework", false); File.WriteAllText(projectPath, project.WriteToString()); #endif }
private static void AddAdaptersDirectory(string path, PBXProject proj, string targetGuid) { if (path.EndsWith("__MACOSX", StringComparison.CurrentCultureIgnoreCase)) { return; } if (path.EndsWith(".framework", StringComparison.CurrentCultureIgnoreCase)) { proj.AddFileToBuild(targetGuid, proj.AddFile(path, path)); string tmp = Utils.FixSlashesInPath(string.Format("$(PROJECT_DIR)/{0}", path.Substring(0, path.LastIndexOf(Path.DirectorySeparatorChar)))); proj.AddBuildProperty(targetGuid, "FRAMEWORK_SEARCH_PATHS", tmp); return; } else if (path.EndsWith(".bundle", StringComparison.CurrentCultureIgnoreCase)) { proj.AddFileToBuild(targetGuid, proj.AddFile(path, path)); return; } string fileName; bool libPathAdded = false; bool headPathAdded = false; string realDstPath = Path.Combine(absoluteProjPath, path); foreach (var filePath in Directory.GetFiles(realDstPath)) { fileName = Path.GetFileName(filePath); if (fileName.EndsWith(".DS_Store")) { continue; } proj.AddFileToBuild(targetGuid, proj.AddFile(Path.Combine(path, fileName), Path.Combine(path, fileName), PBXSourceTree.Source)); if (!libPathAdded && fileName.EndsWith(".a")) { proj.AddBuildProperty(targetGuid, "LIBRARY_SEARCH_PATHS", Utils.FixSlashesInPath(string.Format("$(PROJECT_DIR)/{0}", path))); libPathAdded = true; } if (!headPathAdded && fileName.EndsWith(".h")) { proj.AddBuildProperty(targetGuid, "HEADER_SEARCH_PATHS", Utils.FixSlashesInPath(string.Format("$(PROJECT_DIR)/{0}", path))); headPathAdded = true; } } foreach (var subPath in Directory.GetDirectories(realDstPath)) { AddAdaptersDirectory(Path.Combine(path, Path.GetFileName(subPath)), proj, targetGuid); } }
private static void UpdateProject(BuildTarget buildTarget, string projectPath) { PBXProject project = new PBXProject(); project.ReadFromString(File.ReadAllText(projectPath)); string targetId = project.TargetGuidByName(PBXProject.GetUnityTargetName()); // Required Frameworks project.AddFrameworkToProject(targetId, "CoreTelephony.framework", false); project.AddFrameworkToProject(targetId, "EventKit.framework", false); project.AddFrameworkToProject(targetId, "EventKitUI.framework", false); project.AddFrameworkToProject(targetId, "MediaPlayer.framework", false); project.AddFrameworkToProject(targetId, "MessageUI.framework", false); project.AddFrameworkToProject(targetId, "QuartzCore.framework", false); project.AddFrameworkToProject(targetId, "SystemConfiguration.framework", false); project.AddFrameworkToProject(targetId, "Security.framework", false); project.AddFrameworkToProject(targetId, "MobileCoreServices.framework", false); project.AddFrameworkToProject(targetId, "PassKit.framework", false); project.AddFrameworkToProject(targetId, "Social.framework", false); project.AddFrameworkToProject(targetId, "CoreData.framework", false); project.AddFrameworkToProject(targetId, "AdSupport.framework", false); project.AddFrameworkToProject(targetId, "StoreKit.framework", false); #if UNITY_2017_1_OR_NEWER if (project.ContainsFramework(targetId, "iAd.framework")) { #else if (project.HasFramework("iAd.framework")) { #endif project.RemoveFrameworkFromProject(targetId, "iAd.framework"); } project.AddFileToBuild(targetId, project.AddFile("usr/lib/libz.1.2.5.dylib", "Frameworks/libz.1.2.5.dylib", PBXSourceTree.Sdk)); project.AddFileToBuild(targetId, project.AddFile("usr/lib/libz.dylib", "Frameworks/libz.dylib", PBXSourceTree.Sdk)); project.AddFileToBuild(targetId, project.AddFile("usr/lib/libsqlite3.dylib", "Frameworks/libsqlite3.dylib", PBXSourceTree.Sdk)); project.AddFileToBuild(targetId, project.AddFile("usr/lib/libsqlite3.0.dylib", "Frameworks/libsqlite3.0.dylib", PBXSourceTree.Sdk)); project.AddFileToBuild(targetId, project.AddFile("usr/lib/libxml2.dylib", "Frameworks/libxml2.dylib", PBXSourceTree.Sdk)); // Optional Frameworks project.AddFrameworkToProject(targetId, "Webkit.framework", true); project.AddFrameworkToProject(targetId, "JavaScriptCore.framework", true); project.AddFrameworkToProject(targetId, "WatchConnectivity.framework", true); // For 3.0 MP classes project.AddBuildProperty(targetId, "OTHER_LDFLAGS", "-ObjC"); project.AddBuildProperty(targetId, "OTHER_LDFLAGS", "-lxml2"); project.SetBuildProperty(targetId, "ENABLE_BITCODE", "NO"); File.WriteAllText(projectPath, project.WriteToString()); } }
public static void OnPostprocessBuild(BuildTarget target, string buildPath) { if (!Settings.Instance.AutomatedSetup) { return; } if (target == BuildTarget.iOS) { string pbxProjectPath = PBXProject.GetPBXProjectPath(buildPath); string plistPath = Path.Combine(buildPath, "Info.plist"); PBXProject pbxProject = new PBXProject(); pbxProject.ReadFromFile(pbxProjectPath); #if UNITY_2019_3_OR_NEWER string targetGUID = pbxProject.GetUnityFrameworkTargetGuid(); #else string targetGUID = pbxProject.TargetGuidByName(PBXProject.GetUnityTargetName()); #endif // Minimum supported iOS version on Unity 2018.1 and later is 8.0 #if !UNITY_2018_1_OR_NEWER if (!Settings.Instance.MinimumiOSTarget8OrAbove) { pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-weak_framework Photos"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-weak_framework PhotosUI"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-framework AssetsLibrary"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-framework MobileCoreServices"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-framework ImageIO"); } else #endif { pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-weak_framework PhotosUI"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-framework Photos"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-framework MobileCoreServices"); pbxProject.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-framework ImageIO"); } pbxProject.RemoveFrameworkFromProject(targetGUID, "Photos.framework"); File.WriteAllText(pbxProjectPath, pbxProject.WriteToString()); PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); PlistElementDict rootDict = plist.root; rootDict.SetString("NSPhotoLibraryUsageDescription", Settings.Instance.PhotoLibraryUsageDescription); rootDict.SetString("NSPhotoLibraryAddUsageDescription", Settings.Instance.PhotoLibraryAdditionsUsageDescription); if (Settings.Instance.DontAskLimitedPhotosPermissionAutomaticallyOnIos14) { rootDict.SetBoolean("PHPhotoLibraryPreventAutomaticLimitedAccessAlert", true); } File.WriteAllText(plistPath, plist.WriteToString()); } }
private static void UpdateXcodeBuildSettingsAt(string buildFolderPath, string dylibFolderPath) { // Get path to build/workers/UnityClient@iOS/UnityClient@iOS/Unity-iPhone.xcodeproj string projectPath = PBXProject.GetPBXProjectPath(buildFolderPath); if (!File.Exists(projectPath)) { Debug.LogErrorFormat("Unable to find pbxproj file at: {0}", projectPath); return; } // Load the current Xcode project PBXProject project = new PBXProject(); project.ReadFromFile(projectPath); // Get Xcode Target GUID of "Unity-iPhone" var targetGuid = project.TargetGuidByName("Unity-iPhone"); // Copy Core SDK .dylib from Assets/Plugins to Xcode project var dylibSource = Path.Combine(dylibFolderPath, CORE_SDK_DLL_NAME); var dylibTarget = Path.Combine(buildFolderPath, Path.Combine("Data", CORE_SDK_DLL_NAME)); File.Copy(dylibSource, dylibTarget, true /* overwriteExisting */); // Add the .dylib to the Xcode project var dylibGuid = project.AddFile(dylibTarget, Path.Combine("Data", CORE_SDK_DLL_NAME), PBXSourceTree.Source); project.AddFileToBuild(targetGuid, dylibGuid); // Disable bitcode project.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); // Add @executable_path to runtime search paths so that @rpath/libCoreSdkDll.dylib resolves to // a path that can be located by Xcode and iOS devices. project.SetBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path"); project.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Data"); // Fix library search paths generated by Unity by ensuring that quotation marks are not placed // around the search paths. project.SetBuildProperty(targetGuid, "LIBRARY_SEARCH_PATHS", "$(inherited)"); project.AddBuildProperty(targetGuid, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)"); project.AddBuildProperty(targetGuid, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)/Libraries"); // Add the Data folder as a library search path to locate the libCoreSdkDll.dylib at link time. project.AddBuildProperty(targetGuid, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)/Data"); // Write all changes to the Xcode project file. project.WriteToFile(projectPath); // Output a useful message. Debug.LogFormat("Successfully updated Xcode project settings for: {0}", projectPath); }
private static void UpdatePbxProject(string projectPath, string buildPath) { PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projectPath)); string[] frameworks = { "CFNetwork.framework", "CoreGraphics.framework", "Foundation.framework", "MobileCoreServices.framework", "Security.framework", "SystemConfiguration.framework", "UIKit.framework", "CoreTelephony.framework", "CoreLocation.framework", "CoreData.framework", "UserNotifications.framework", "WebKit.framework", "StoreKit.framework" }; string[] targets = { proj.TargetGuidByName(PBXProject.GetUnityTargetName()), proj.TargetGuidByName(PBXProject.GetUnityTestTargetName()) }; string airshipConfig = Path.Combine(buildPath, "AirshipConfig.plist"); if (File.Exists(airshipConfig)) { File.Delete(airshipConfig); } File.Copy(Path.Combine(Application.dataPath, "Plugins/iOS/AirshipConfig.plist"), airshipConfig); string airshipGUID = proj.AddFile("AirshipConfig.plist", "AirshipConfig.plist", PBXSourceTree.Source); foreach (string target in targets) { proj.AddBuildProperty(target, "OTHER_LDFLAGS", "$(inherited)"); proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC -lz -lsqlite3"); proj.AddFileToBuild(target, airshipGUID); foreach (string framework in frameworks) { proj.AddFrameworkToProject(target, framework, false); } } File.WriteAllText(projectPath, proj.WriteToString()); }
public static void OnPostProcessBuild(BuildTarget target, string path) { if (BuildTarget.iOS != target) { return; } IOSProjectInitData data = IOSProjectInitData.Load(); string projPath = PBXProject.GetPBXProjectPath(path); PBXProject pbx = new PBXProject(); pbx.ReadFromString(File.ReadAllText(projPath)); string guid = pbx.TargetGuidByName("Unity-iPhone"); pbx.AddFrameworkToProject(guid, "CoreTelephony.framework", false); pbx.AddFrameworkToProject(guid, "StoreKit.framework", false); pbx.AddFrameworkToProject(guid, "AdSupport.framework", false); pbx.AddFrameworkToProject(guid, "WebKit.framework", false); pbx.AddFrameworkToProject(guid, "MessageUI.framework", false); pbx.AddFrameworkToProject(guid, "GLKit.framework", false); pbx.AddFrameworkToProject(guid, "MobileCoreService.framework", false); pbx.AddFileToBuild(guid, pbx.AddFile("usr/lib/libz.tbd", "Frameworks/libz.tbd", PBXSourceTree.Sdk)); pbx.AddFileToBuild(guid, pbx.AddFile("usr/lib/libc++.tbd", "Frameworks/libc++.tbd", PBXSourceTree.Sdk)); pbx.AddFileToBuild(guid, pbx.AddFile("usr/lib/libicucore.tbd", "Frameworks/libicucore.tbd", PBXSourceTree.Sdk)); pbx.AddFileToBuild(guid, pbx.AddFile("usr/lib/libsqlite3.0.tbd", "Frameworks/libsqlite3.0.tbd", PBXSourceTree.Sdk)); pbx.SetBuildProperty(guid, "ENABLE_BITCODE", "NO"); pbx.AddBuildProperty(guid, "OTHER_LDFLAGS", "-force_load $(PROJECT_DIR)/Libraries/Plugins/iOS/WeChat/libWeChatSDK.a"); pbx.AddBuildProperty(guid, "OTHER_LDFLAGS", "-ObjC"); //$(PROJECT_DIR) / Libraries / Plugins / iOS / WeChat / libWeChatSDK.a //有米SDK需要内容 File.WriteAllText(projPath, pbx.WriteToString()); ////修改PList string plistPath = path + "/Info.plist"; InfoPListEditor pListEditor = new InfoPListEditor(plistPath); foreach (string urlScheme in data.urlSchemes) { pListEditor.AddUrlScheme("yfy", urlScheme); } foreach (string whiteUrlScheme in data.whiteSchemeList) { pListEditor.AddLSApplicationQueriesScheme(whiteUrlScheme); } pListEditor.Save(); }
private static void RunPostBuildScript(BuildTarget target, bool preBuild, string projectPath = "") { if (target == BuildTarget.Android) { UnityEngine.Debug.Log("adjust: Starting to perform post build tasks for Android platform."); RunPostProcessTasksAndroid(); } else if (target == BuildTarget.iOS) { #if UNITY_EDITOR_OSX UnityEngine.Debug.Log("adjust: Starting to perform post build tasks for iOS platform."); string xcodeProjectPath = projectPath + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject xcodeProject = new PBXProject(); xcodeProject.ReadFromFile(xcodeProjectPath); // The adjust SDK needs two frameworks to be added to the project: // - AdSupport.framework // - iAd.framework string xcodeTarget = xcodeProject.TargetGuidByName("Unity-iPhone"); UnityEngine.Debug.Log("adjust: Adding AdSupport.framework to Xcode project."); xcodeProject.AddFrameworkToProject(xcodeTarget, "AdSupport.framework", true); UnityEngine.Debug.Log("adjust: AdSupport.framework added successfully."); UnityEngine.Debug.Log("adjust: Adding iAd.framework to Xcode project."); xcodeProject.AddFrameworkToProject(xcodeTarget, "iAd.framework", true); UnityEngine.Debug.Log("adjust: iAd.framework added successfully."); // The adjust SDK needs to have Obj-C exceptions enabled. // GCC_ENABLE_OBJC_EXCEPTIONS=YES UnityEngine.Debug.Log("adjust: Enabling Obj-C exceptions by setting GCC_ENABLE_OBJC_EXCEPTIONS value to YES."); xcodeProject.AddBuildProperty(xcodeTarget, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES"); UnityEngine.Debug.Log("adjust: Obj-C exceptions enabled successfully."); // The adjust SDK needs to have -ObjC flag set in other linker flags section because of it's categories. // OTHER_LDFLAGS -ObjC UnityEngine.Debug.Log("adjust: Adding -ObjC flag to other linker flags (OTHER_LDFLAGS)."); xcodeProject.AddBuildProperty(xcodeTarget, "OTHER_LDFLAGS", "-ObjC"); UnityEngine.Debug.Log("adjust: -ObjC successfully added to other linker flags."); // Save the changes to Xcode project file. xcodeProject.WriteToFile(xcodeProjectPath); #endif } }
public static void OnPostProcessBuild(BuildTarget buildTarget, string buildPath) { if (buildTarget == BuildTarget.iOS) { // var projPath = PBXProject.GetPBXProjectPath(buildPath); var projPath = buildPath + "/Unity-iPhone.xcodeproj/project.pbxproj"; var proj = new PBXProject(); proj.ReadFromFile(projPath); string targetGuid = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); //// Configure build settings proj.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_BRIDGING_HEADER", "Libraries/LoomSDK/ios/LoomSDKSwift-Bridging-Header.h"); proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_INTERFACE_HEADER_NAME", "LoomSDKSwift.h"); proj.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks"); proj.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Libraries/LoomSDK/Frameworks"); proj.SetBuildProperty(targetGuid, "SWIFT_VERSION", "3.0"); //frameworks DirectoryInfo projectParent = Directory.GetParent(Application.dataPath); char divider = Path.DirectorySeparatorChar; DirectoryInfo destinationFolder = new DirectoryInfo(buildPath + divider + "Frameworks/LoomSDK/Frameworks"); foreach (DirectoryInfo file in destinationFolder.GetDirectories()) { string filePath = "Frameworks/LoomSDK/Frameworks/" + file.Name; //proj.AddFile(filePath, filePath, PBXSourceTree.Source); string fileGuid = proj.AddFile(filePath, filePath, PBXSourceTree.Source); proj.AddFrameworkToProject(targetGuid, file.Name, false); PBXProjectExtensions.AddFileToEmbedFrameworks(proj, targetGuid, fileGuid); } proj.WriteToFile(projPath); //info.plist var plistPath = buildPath + "/Info.plist"; var plist = new PlistDocument(); plist.ReadFromFile(plistPath); // Update value PlistElementDict rootDict = plist.root; //rootDict.SetString("CFBundleIdentifier","$(PRODUCT_BUNDLE_IDENTIFIER)"); PlistElementArray urls = rootDict.CreateArray("CFBundleURLTypes"); PlistElementDict dic = urls.AddDict(); PlistElementArray scheme = dic.CreateArray("CFBundleURLSchemes"); scheme.AddString(PlayerSettings.applicationIdentifier); dic.SetString("CFBundleURLName", "auth0"); // Write plist File.WriteAllText(plistPath, plist.WriteToString()); } }
public static void PrepareProject(string buildPath) { Debug.Log("preparing your xcode project for appodeal"); string projPath = Path.Combine(buildPath, "Unity-iPhone.xcodeproj/project.pbxproj"); absoluteProjPath = Path.GetFullPath(buildPath); PBXProject project = new PBXProject(); project.ReadFromString(File.ReadAllText(projPath)); string target = project.TargetGuidByName("Unity-iPhone"); AddProjectFrameworks(frameworkList, project, target, false); AddProjectFrameworks(weakFrameworkList, project, target, true); AddProjectLibs(platformLibs, project, target); project.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); project.AddBuildProperty(target, "ENABLE_BITCODE", "YES"); project.AddBuildProperty(target, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)/Libraries"); string apdFolder = "Adapters"; string appodealPath = Path.Combine(Application.dataPath, "Appodeal"); string adaptersPath = Path.Combine(appodealPath, apdFolder); if (Directory.Exists(adaptersPath)) { foreach (string file in Directory.GetFiles(adaptersPath)) { if (Path.GetExtension(file).Equals(".zip")) { Debug.Log("unzipping:" + file); ExtractZip(file, Path.Combine(absoluteProjPath, apdFolder)); AddAdaptersDirectory(apdFolder, project, target); } } } string resourcesFolder = "InternalResources"; string chScript = "CrashHunterScript.sh"; string uploader = "dSYMUploader"; string resourcesPath = Path.Combine(appodealPath, resourcesFolder); File.Copy(Path.Combine(resourcesPath, chScript), Path.Combine(buildPath, chScript)); File.Copy(Path.Combine(resourcesPath, chScript), Path.Combine(buildPath, uploader)); project.AppendShellScriptBuildPhase(target, "Run Script ChashHunter", "/bin/sh", "$PROJECT_DIR/CrashHunterScript.sh"); #if UNITY_4 project.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks/Plugins/iOS"); project.SetBuildProperty(target, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)/Libraries"); CopyAndReplaceDirectory("Assets/" + AppodealFramework, Path.Combine(buildPath, "Frameworks/" + AppodealFramework)); project.AddFileToBuild(target, project.AddFile("Frameworks/" + AppodealFramework, "Frameworks/" + AppodealFramework, PBXSourceTree.Source)); #endif File.WriteAllText(projPath, project.WriteToString()); }
public static void AddBuildFlag(string path) { string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj")); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string targetGUID = proj.TargetGuidByName("Unity-iPhone"); proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(inherited) FBSDKCOCOAPODS=1"); proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC"); proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true); File.WriteAllText(projPath, proj.WriteToString()); }
public static void OnPostProcess(BuildTarget buildTarget, string buildPath) { if (buildTarget != BuildTarget.iOS) { return; } var proj = new PBXProject(); var dummy = ScriptableObject.CreateInstance <EntitlementsPostProcess>(); var file = dummy.m_entitlementsFile; ScriptableObject.DestroyImmediate(dummy); if (file == null) { Debug.LogError("EntitlementsFile为空"); return; } var proj_path = PBXProject.GetPBXProjectPath(buildPath); proj.ReadFromFile(proj_path); // target_name = "Unity-iPhone" var target_name = PBXProject.GetUnityTargetName(); var target_guid = proj.TargetGuidByName(target_name); var src = AssetDatabase.GetAssetPath(file); var file_name = Path.GetFileName(src); var dst = buildPath + "/" + target_name + "/" + file_name; FileUtil.CopyFileOrDirectory(src, dst); proj.AddFile(target_name + "/" + file_name, file_name); proj.AddBuildProperty(target_guid, "CODE_SIGN_ENTITLEMENTS", target_name + "/" + file_name); proj.AddBuildProperty(target_guid, "SystemCapabilities", "{com.apple.Push = {enabled = 1;};}"); //Handle plist string plistPath = buildPath + "/Info.plist"; PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); PlistElementDict rootDict = plist.root; rootDict.SetString("NSPhotoLibraryUsageDescription", "若不允许,您将无法使用图片上传功能"); rootDict.SetString("NSCameraUsageDescription", "若不允许,您将无法使用图片上传功能"); rootDict.SetString("NSLocationWhenInUseUsageDescription", "若不允许,您将无法使用位置提示功能"); rootDict.SetString("NSMicrophoneUsageDescription", "若不允许,您将无法使用语言消息功能"); plist.WriteToFile(plistPath); proj.WriteToFile(proj_path); }
public static void OnPostProcessBuild(BuildTarget buildTarget, string pathToBuiltProject) { if (buildTarget != BuildTarget.iOS) { return; } PBXProject project = new PBXProject(); string pbxProjectPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; project.ReadFromString(File.ReadAllText(pbxProjectPath)); string target = project.TargetGuidByName(PBXProject.GetUnityTargetName()); string testTarget = project.TargetGuidByName(PBXProject.GetUnityTestTargetName()); // Linker flags. project.SetBuildProperty(target, "ARCHS", "$(ARCHS_STANDARD)"); project.SetBuildProperty(testTarget, "ARCHS", "$(ARCHS_STANDARD)"); project.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); project.AddBuildProperty(testTarget, "OTHER_LDFLAGS", "-ObjC"); project.AddBuildProperty(target, "OTHER_LDFLAGS", "-lz"); project.AddBuildProperty(testTarget, "OTHER_LDFLAGS", "-lz"); // Search paths. project.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); project.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); // Framework dependencies. project.AddFrameworkToProject(target, "AVFoundation.framework", true); project.AddFrameworkToProject(target, "Accelerate.framework", true); project.AddFrameworkToProject(target, "CFNetwork.framework", true); project.AddFrameworkToProject(target, "CoreBluetooth.framework", true); project.AddFrameworkToProject(target, "CoreText.framework", true); project.AddFrameworkToProject(target, "MediaPlayer.framework", true); project.AddFrameworkToProject(target, "MediaToolbox.framework", true); project.AddFrameworkToProject(target, "Metal.framework", true); project.AddFrameworkToProject(target, "Security.framework", true); project.AddFrameworkToProject(target, "SystemConfiguration.framework", true); // Dynamic library dependencies. string sqlite3dylibGuid = project.AddFile("usr/lib/libsqlite3.dylib", "usr/lib/libsqlite3.dylib", PBXSourceTree.Sdk); project.AddFileToBuild(target, sqlite3dylibGuid); string libCppdylibGuid = project.AddFile("usr/lib/libc++.dylib", "usr/lib/libc++.dylib", PBXSourceTree.Sdk); project.AddFileToBuild(target, libCppdylibGuid); File.WriteAllText(pbxProjectPath, project.WriteToString()); }
private static void PrepareProject(string buildPath) { var projPath = Path.Combine(buildPath, "Unity-iPhone.xcodeproj/project.pbxproj"); var project = new PBXProject(); project.ReadFromString(File.ReadAllText(projPath)); var target = project.TargetGuidByName("Unity-iPhone"); // The MoPub iOS SDK now includes Swift, so these properties ensure Xcode handles that properly. project.AddBuildProperty(target, "SWIFT_VERSION", "5"); project.AddBuildProperty(target, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); File.WriteAllText(projPath, project.WriteToString()); }
public static void OnPostProcessBuild(BuildTarget buildTarget, string buildPath) { #if UNITY_IOS if (buildTarget == BuildTarget.iOS) { var projPath = buildPath + "/Unity-Iphone.xcodeproj/project.pbxproj"; var proj = new PBXProject(); proj.ReadFromFile(projPath); var targetGuid = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); proj.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_BRIDGING_HEADER", "Libraries/Plugins/iOS/SwiftPlugin/Source/SwiftPlugin-Bridging-Header.h"); proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_INTERFACE_HEADER_NAME", "SwiftPlugin-Swift.h"); proj.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks $(PROJECT_DIR)/lib/$(CONFIGURATION) $(inherited)"); proj.AddBuildProperty(targetGuid, "FRAMERWORK_SEARCH_PATHS", "$(inherited) $(PROJECT_DIR) $(PROJECT_DIR)/Frameworks"); proj.AddBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); proj.AddBuildProperty(targetGuid, "DYLIB_INSTALL_NAME_BASE", "@rpath"); proj.AddBuildProperty(targetGuid, "LD_DYLIB_INSTALL_NAME", "@executable_path/../Frameworks/$(EXECUTABLE_PATH)"); proj.AddBuildProperty(targetGuid, "DEFINES_MODULE", "YES"); proj.AddBuildProperty(targetGuid, "SWIFT_VERSION", "4.0"); proj.AddBuildProperty(targetGuid, "COREML_CODEGEN_LANGUAGE", "Swift"); proj.WriteToFile(projPath); } #endif }
static void AddFlags(PBXProject proj, string targetGuid) { foreach (var flag in ISD_Settings.Instance.Flags) { if (flag.Type == ISD_FlagType.LinkerFlag) { proj.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", flag.Name); } if (flag.Type == ISD_FlagType.LinkerFlag) { proj.AddBuildProperty(targetGuid, "OTHER_CFLAGS", flag.Name); } } }
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) { Debug.Log("[OnPostprocessBuild] target = " + target + ", pathToBuiltProject = " + pathToBuiltProject); if (target == BuildTarget.iOS) { string plistPath = pathToBuiltProject + "/Info.plist"; PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); // Get root var typesKey = "CFBundleURLTypes"; PlistElementDict rootDict = plist.root; var types = rootDict[typesKey]; if (types == null) { types = rootDict.CreateArray(typesKey); } var ta = types.AsArray(); var newScheme = ta.AddDict(); newScheme.SetString("CFBundleURLName", "com.solitaire.omg"); var schems = newScheme.CreateArray("CFBundleSchemes"); schems.AddString("omgsolitaire"); // Write to file File.WriteAllText(plistPath, plist.WriteToString()); #if UNITY_EDITOR_OSX string xcodeProjectPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject xcodeProject = new PBXProject(); xcodeProject.ReadFromFile(xcodeProjectPath); // setting bitcode to No string xcodeTarget = xcodeProject.TargetGuidByName("Unity-iPhone"); xcodeProject.SetBuildProperty(xcodeTarget, "ENABLE_BITCODE", "NO"); xcodeProject.AddBuildProperty(xcodeTarget, "OTHER_LDFLAGS", "-ObjC"); xcodeProject.AddBuildProperty(xcodeTarget, "CLANG_ENABLE_MODULES", "YES"); xcodeProject.AddFrameworkToProject(xcodeTarget, "AdSupport.framework", true); xcodeProject.AddFrameworkToProject(xcodeTarget, "iAd.framework", true); xcodeProject.AddFrameworkToProject(xcodeTarget, "GoogleMobileAds.framework", false); // Save the changes to Xcode project file. xcodeProject.WriteToFile(xcodeProjectPath); #endif } }
//添加 xcodeModel.frameworks 中指定的 framework shareSDK子平台的framework private static void AddXcodeModelFrameworks(MOBXCodeEditorModel xcodeModel, PBXProject xcodeProj, string xcodeTargetGuid, string xcodeTargetPath) { foreach (MOBPathModel pathModel in xcodeModel.frameworks) { if (pathModel.filePath.Contains(".framework") && !pathModel.filePath.Contains("MOBFoundation.framework")) { string frameworkPath = pathModel.filePath.Replace(pathModel.rootPath, ""); // Debug.Log("frameworkPath" + frameworkPath); string savePath = xcodeTargetPath + frameworkPath; int tempIndex = frameworkPath.LastIndexOf("/"); string saveFrameworkPath = frameworkPath.Substring(0, tempIndex); //将 framework copy到指定目录 DirectoryInfo frameworkInfo = new DirectoryInfo(pathModel.filePath); DirectoryInfo saveFrameworkInfo = new DirectoryInfo(savePath); CopyAll(frameworkInfo, saveFrameworkInfo); //将 framework 加入 proj中 xcodeProj.AddFileToBuild(xcodeTargetGuid, xcodeProj.AddFile(savePath, "MOB" + frameworkPath, PBXSourceTree.Sdk)); //将 build setting 设置 xcodeProj.AddBuildProperty(xcodeTargetGuid, "FRAMEWORK_SEARCH_PATHS", "$(SRCROOT)" + saveFrameworkPath); } else { Debug.LogWarning(pathModel.filePath + " no framework"); } } }
public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { #if UNITY_IPHONE // 修改xcode工程 string projPath = PBXProject.GetPBXProjectPath(path); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); proj.AddFrameworkToProject(target, "libz.tbd", false); proj.AddFrameworkToProject(target, "CoreTelephony.framework", false); string fileName = Application.dataPath.Replace("Assets", "iOS/XunFeiSR"); XcodeModifyGeneral.CopyAndReplaceDirectory(fileName, Path.Combine(path, "XunFeiSR")); List <string> filePaths = new List <string>(); XcodeModifyGeneral.AddFilesToBuild(ref filePaths, path, "XunFeiSR"); foreach (var filepath in filePaths) { proj.AddFileToBuild(target, proj.AddFile(filepath, filepath)); } proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/XunFeiSR"); proj.SetBuildProperty(target, "ENABLE_BITCODE", "false"); proj.WriteToFile(projPath); #endif } }
private static void UpdateProject(BuildTarget buildTarget, string projectPath) { #if UNITY_IOS PBXProject project = new PBXProject(); project.ReadFromString(File.ReadAllText(projectPath)); string targetId = project.TargetGuidByName(PBXProject.GetUnityTargetName()); // Required Frameworks project.AddFrameworkToProject(targetId, "AdSupport.framework", false); project.AddFrameworkToProject(targetId, "AudioToolbox.framework", false); project.AddFrameworkToProject(targetId, "AVFoundation.framework", false); project.AddFrameworkToProject(targetId, "CoreMedia.framework", false); project.AddFrameworkToProject(targetId, "CoreTelephony.framework", false); project.AddFrameworkToProject(targetId, "JavaScriptCore.framework", false); project.AddFrameworkToProject(targetId, "MessageUI.framework", false); project.AddFrameworkToProject(targetId, "MobileCoreServices.framework", false); project.AddFrameworkToProject(targetId, "SystemConfiguration.framework", false); project.AddFileToBuild(targetId, project.AddFile("usr/lib/libz.1.2.5.dylib", "Frameworks/libz.1.2.5.dylib", PBXSourceTree.Sdk)); // Optional Frameworks project.AddFrameworkToProject(targetId, "Social.framework", true); project.AddFrameworkToProject(targetId, "StoreKit.framework", true); project.AddFrameworkToProject(targetId, "WatchConnectivity.framework", true); project.AddFrameworkToProject(targetId, "Webkit.framework", true); // For 3.0 MP classes project.AddBuildProperty(targetId, "OTHER_LDFLAGS", "-ObjC -fobjc-arc"); File.WriteAllText(projectPath, project.WriteToString()); #endif }
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) { if (target != BuildTarget.iOS) { Debug.LogWarning("Target is not iOS. XCodePostProcessBuild will not run"); return; } string projectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject); var pbxProject = new PBXProject(); pbxProject.ReadFromString(File.ReadAllText(projectPath)); #if UNITY_2019_3_OR_NEWER string mainTarget = pbxProject.GetUnityMainTargetGuid(); string frameworkTarget = pbxProject.GetUnityFrameworkTargetGuid(); #else string mainTarget = pbxProject.TargetGuidByName(PBXProject.GetUnityTargetName()); string frameworkTarget = mainTarget; #endif DisableBitcode(pbxProject, mainTarget, frameworkTarget); pbxProject.SetBuildProperty(frameworkTarget, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); pbxProject.AddBuildProperty(frameworkTarget, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); SetBugly(frameworkTarget, pbxProject, pathToBuiltProject); pbxProject.WriteToFile(projectPath); }
private static void OnIOSBuildFinished(BuildTarget r_target, string r_pathToBuiltProject) { string projPath = PBXProject.GetPBXProjectPath(r_pathToBuiltProject); PBXProject pbxProject = new PBXProject(); pbxProject.ReadFromString(File.ReadAllText(projPath)); string targetGuid = pbxProject.TargetGuidByName("Unity-iPhone"); //添加它喵的framework string[] frameworks = { "Security.framework", "SystemConfiguration.framework", "CoreTelephony.framework", "CFNetwork.framework" }; foreach (var framework in frameworks) { AddFramework(pbxProject, targetGuid, framework, false); } //添加它喵的lib AddLib(pbxProject, targetGuid, "libsqlite3.tbd"); AddLib(pbxProject, targetGuid, "libc++.tbd"); AddLib(pbxProject, targetGuid, "libz.tbd"); // 添加flag pbxProject.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", "-Objc -all_load"); // 应用修改 File.WriteAllText(projPath, pbxProject.WriteToString()); // 修改Info.plist文件 var plistPath = Path.Combine(r_pathToBuiltProject, "Info.plist"); var plist = new PlistDocument(); plist.ReadFromFile(plistPath); var key = plist.root.CreateArray("LSApplicationQueriesSchemes"); key.AddString("wechat"); key.AddString("weixin"); plist.WriteToFile(plistPath); string pPath = Application.dataPath.Replace("Assets", string.Empty); if (ReplaceFile($"{pPath}XCClasses/UnityAppController.h", $"{r_pathToBuiltProject}/Classes/UnityAppController.h")) { if (ReplaceFile($"{pPath}XCClasses/UnityAppController.mm", $"{r_pathToBuiltProject}/Classes/UnityAppController.mm")) { // } else { EditorUtility.DisplayDialog("错误", "替换UnityAppController.mm失败,请检查XCClasses文件夹", "ok"); } } else { EditorUtility.DisplayDialog("错误", "替换UnityAppController.h失败,请检查XCClasses文件夹", "ok"); } }
private static void ModifyProject(string buildPath) { string projPath = PBXProject.GetPBXProjectPath(buildPath); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string targetGuid = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); var settings = projectSetting.XcodeSettingsList.FindAll(p => p.Enabled); foreach (var setting in settings) { setting.Frameworks.ForEach(framework => proj.AddFrameworkToProject(targetGuid, framework.Path, framework.IsWeak)); setting.Librarys.ForEach(lib => AddLibToProject(proj, targetGuid, lib.File)); setting.DependentLibrarys.ForEach(lib => AddLibToProject(proj, targetGuid, lib.File)); foreach (var buildProperty in setting.BuildPropertys) { if (string.IsNullOrEmpty(buildProperty.Name) || string.IsNullOrEmpty(buildProperty.Value)) { continue; } proj.AddBuildProperty(targetGuid, buildProperty.Name, buildProperty.Value); } } proj.SetBuildProperty(targetGuid, XcodeProjectConst.ENABLE_BITCODE_KEY, projectSetting.EnableBitCode ? "YES" : "NO"); File.WriteAllText(projPath, proj.WriteToString()); }
private static void BuildiOS(string path = "") { #if UNITY_IOS Debug.Log("TenjinSDK: Starting iOS Build"); string projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject project = new PBXProject(); project.ReadFromFile(projectPath); #if UNITY_2019_3_OR_NEWER string buildTarget = project.GetUnityFrameworkTargetGuid(); #else string buildTarget = project.TargetGuidByName("Unity-iPhone"); #endif List <string> frameworks = new List <string>(); frameworks.Add("AdSupport.framework"); frameworks.Add("AppTrackingTransparency.framework"); frameworks.Add("iAd.framework"); frameworks.Add("StoreKit.framework"); foreach (string framework in frameworks) { Debug.Log("TenjinSDK: Adding framework: " + framework); project.AddFrameworkToProject(buildTarget, framework, true); } Debug.Log("TenjinSDK: Adding -ObjC flag to other linker flags (OTHER_LDFLAGS)"); project.AddBuildProperty(buildTarget, "OTHER_LDFLAGS", "-ObjC"); File.WriteAllText(projectPath, project.WriteToString()); #endif }
public void OnPostprocessBuild(BuildReport report) { Debug.Log("开始后处理Xcode工程"); var pathToBuiltProject = report.summary.outputPath; var target = report.summary.platform; Debug.LogFormat("Postprocessing build at \"{0}\" for target {1}", pathToBuiltProject, target); if (target != BuildTarget.iOS) { return; } PBXProject proj = new PBXProject(); string pbxFilename = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; proj.ReadFromFile(pbxFilename); string targetName = PBXProject.GetUnityTargetName(); string guid = proj.TargetGuidByName(targetName); proj.SetBuildProperty(guid, "USYM_UPLOAD_AUTH_TOKEN", "FakeToken"); proj.SetBuildProperty(guid, "ENABLE_BITCODE", "NO"); proj.AddBuildProperty(guid, "OTHER_LDFLAGS", "-ObjC"); proj.AddFrameworkToProject(guid, "libresolv.9.tbd", false); proj.WriteToFile(pbxFilename); Debug.Log("后处理Xcode工程结束"); }
public static void OnPostprocessBuild(BuildTarget BuildTarget, string path) { if (BuildTarget == BuildTarget.iOS) { string projPath = PBXProject.GetPBXProjectPath(path); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); //add Other link flag string target = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); File.WriteAllText(projPath, proj.WriteToString()); //add framework proj.AddFrameworkToProject(target, "AdSupport.framework", false); proj.AddFrameworkToProject(target, "StoreKit.framework", false); proj.AddFrameworkToProject(target, "AVFoundation.framework", false); proj.AddFrameworkToProject(target, "SystemConfiguration.framework", false); proj.AddFrameworkToProject(target, "JavaScriptCore.framework", false); proj.AddFrameworkToProject(target, "ImageIO.framework", false); proj.AddFrameworkToProject(target, "UIKit.framework", false); proj.AddFrameworkToProject(target, "libz.1.tbd", false); File.WriteAllText(projPath, proj.WriteToString()); //add ATS in plist string plistPath = path + "/Info.plist"; PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); PlistElementDict dictTransportSecurity = plist.root ["NSAppTransportSecurity"].AsDict(); dictTransportSecurity.SetBoolean("NSAllowsArbitraryLoads", true); File.WriteAllText(plistPath, plist.WriteToString()); } }
public static void OnPostProcess(BuildTarget buildTarget, string buildPath) { if (buildTarget != BuildTarget.iOS) { return; } var dummy = ScriptableObject.CreateInstance <EntitlementsPostProcess>(); var file = dummy.m_entitlementsFile; ScriptableObject.DestroyImmediate(dummy); if (file == null) { return; } var proj_path = PBXProject.GetPBXProjectPath(buildPath); var proj = new PBXProject(); proj.ReadFromFile(proj_path); // target_name = "Unity-iPhone" var target_name = PBXProject.GetUnityTargetName(); var target_guid = proj.TargetGuidByName(target_name); var src = AssetDatabase.GetAssetPath(file); var file_name = Path.GetFileName(src); var dst = buildPath + "/" + target_name + "/" + file_name; FileUtil.CopyFileOrDirectory(src, dst); proj.AddFile(target_name + "/" + file_name, file_name); proj.AddBuildProperty(target_guid, "CODE_SIGN_ENTITLEMENTS", target_name + "/" + file_name); proj.WriteToFile(proj_path); }
private static void onPostProcessBuildPlayer(BuildTarget target, string pathToBuiltProject) { #if UNITY_EDITOR_OSX && UNITY_5_PLUS if (target == BuildTarget.iOS) { UnityEngine.Debug.Log("Path to built project: " + pathToBuiltProject); string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; UnityEngine.Debug.Log("Project Path: " + projPath); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string projTarget = proj.TargetGuidByName("Unity-iPhone"); UnityEngine.Debug.Log("Project Target: " + projTarget); proj.AddFrameworkToProject(projTarget, "Security.framework", false); proj.AddBuildProperty(projTarget, "OTHER_LDFLAGS", "-ObjC -lz -lstdc++"); File.WriteAllText(projPath, proj.WriteToString()); } #endif if (target == BuildTarget.WP8Player) { postProcessWP8Build(pathToBuiltProject); } }
private static void EditXcodeProject(string buildFolder) { PBXProject project = new PBXProject(); string path = Path.Combine(buildFolder, FileUtil.NiceWinPath("Unity-iPhone.xcodeproj/project.pbxproj")); project.ReadFromFile(path); string targetGuid = project.TargetGuidByName(PBXProject.GetUnityTargetName()); if (AdvertisementSettings.enabled && AdvertisementSettings.IsPlatformEnabled(RuntimePlatform.IPhonePlayer)) { string target = Path.Combine(buildFolder, Path.Combine("UnityAds", "UnityAds.framework")); FileUtil.CopyDirectoryRecursive(Path.Combine(extensionPath, FileUtil.NiceWinPath("Editor/Resources/iOS/builds/UnityAds.framework")), target, true); project.AddFileToBuild(targetGuid, project.AddFile(Path.Combine("UnityAds", "UnityAds.framework"), "Frameworks/UnityAds.framework", PBXSourceTree.Source)); project.AddBuildProperty(targetGuid, "FRAMEWORK_SEARCH_PATHS", "$(SRCROOT)/UnityAds"); project.AddFrameworkToProject(targetGuid, "AdSupport.framework", true); project.AddFrameworkToProject(targetGuid, "StoreKit.framework", false); project.AddFrameworkToProject(targetGuid, "CoreTelephony.framework", false); } else { project.RemoveFile(project.FindFileGuidByRealPath(Path.Combine("UnityAds", "UnityAds.framework"))); string[] removeValues = new string[] { "$(SRCROOT)/UnityAds" }; project.UpdateBuildProperty(targetGuid, "FRAMEWORK_SEARCH_PATHS", null, removeValues); string str5 = Path.Combine(buildFolder, "UnityAds"); if (Directory.Exists(str5)) { Directory.Delete(str5, true); } } project.AddFileToBuild(targetGuid, project.AddFile("UnityAdsConfig.h", "Classes/UnityAds/UnityAdsConfig.h")); project.WriteToFile(path); }
public static void OnPostprocessBuild2(BuildTarget target, string buildPath) { if (!AUTO_SETUP_FRAMEWORKS && !AUTO_SETUP_ICLOUD) { return; } if (target == BuildTarget.iOS) { string pbxProjectPath = PBXProject.GetPBXProjectPath(buildPath); PBXProject pbxProject = new PBXProject(); pbxProject.ReadFromFile(pbxProjectPath); #if UNITY_2019_3_OR_NEWER string targetGUID = pbxProject.GetUnityFrameworkTargetGuid(); #else string targetGUID = pbxProject.TargetGuidByName(PBXProject.GetUnityTargetName()); #endif #if UNITY_2018_2_OR_NEWER if (string.IsNullOrEmpty(pbxProject.GetBuildPropertyForAnyConfig(targetGUID, "PRODUCT_BUNDLE_IDENTIFIER"))) { pbxProject.AddBuildProperty(targetGUID, "PRODUCT_BUNDLE_IDENTIFIER", PlayerSettings.applicationIdentifier); } #else pbxProject.SetBuildProperty(targetGUID, "PRODUCT_BUNDLE_IDENTIFIER", PlayerSettings.applicationIdentifier); #endif File.WriteAllText(pbxProjectPath, pbxProject.WriteToString()); } }
private static void AddPushEntitlement(string path, PBXProject project, string target) { var entitlements = new PlistDocument(); string entitlementsFilename = MainTargetName + ".entitlements"; string entitlementsRelativePath = MainTargetName + "/" + entitlementsFilename; string entitlementsPath = path + "/" + entitlementsRelativePath; if (File.Exists(entitlementsPath)) { entitlements.ReadFromFile(entitlementsPath); } if (entitlements.root["aps-environment"] != null) { return; } else { entitlements.root.SetString("aps-environment", "development"); } project.AddFile(entitlementsRelativePath, entitlementsFilename); entitlements.WriteToFile(entitlementsPath); project.AddBuildProperty(target, "CODE_SIGN_ENTITLEMENTS", entitlementsRelativePath); }