public SetBuildProperty ( IEnumerable |
||
targetGuids | IEnumerable |
|
name | string | |
value | string | |
return | void |
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)); string target = proj.TargetGuidByName("Unity-iPhone"); // システムのフレームワークを追加 proj.AddFrameworkToProject(target, "AssetsLibrary.framework", false); // 自前のフレームワークを追加 CopyAndReplaceDirectory("Assets/Lib/mylib.framework", Path.Combine(path, "Frameworks/mylib.framework")); proj.AddFileToBuild(target, proj.AddFile("Frameworks/mylib.framework", "Frameworks/mylib.framework", PBXSourceTree.Source)); // ファイルを追加 var fileName = "my_file.xml"; var filePath = Path.Combine("Assets/Lib", fileName); File.Copy(filePath, Path.Combine(path, fileName)); proj.AddFileToBuild(target, proj.AddFile(fileName, fileName, PBXSourceTree.Source)); // Yosemiteでipaが書き出せないエラーに対応するための設定 proj.SetBuildProperty(target, "CODE_SIGN_RESOURCE_RULES_PATH", "$(SDKROOT)/ResourceRules.plist"); // フレームワークの検索パスを設定・追加 proj.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); // 書き出し File.WriteAllText(projPath, proj.WriteToString()); } }
static void runPodUpdate(string path) { // Copy the podfile into the project. string podfile = "Assets/GoogleMobileAds/Editor/Podfile"; string destpodfile = path + "/Podfile"; if(!System.IO.File.Exists(destpodfile)) { FileUtil.CopyFileOrDirectory(podfile, destpodfile); } try { CocoaPodHelper.Update(path); } catch (Exception e) { UnityEngine.Debug.Log("Could not create a new Xcode project with CocoaPods: " + e.Message); } #if UNITY_5 string pbxprojPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject project = new PBXProject(); project.ReadFromString(File.ReadAllText(pbxprojPath)); string target = project.TargetGuidByName("Unity-iPhone"); project.SetBuildProperty(target, "CLANG_ENABLE_MODULES", "YES"); project.AddBuildProperty(target, "OTHER_LDFLAGS", "$(inherited)"); File.WriteAllText(pbxprojPath, project.WriteToString()); #else UnityEngine.Debug.Log("Unable to modify build settings in XCode project. Build " + "settings must be set manually"); #endif }
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) { Debug.LogWarning("IphoneX Fiter"); if (target != BuildTarget.iOS) { Debug.LogWarning("Target is not iPhone. XCodePostProcess will not run"); return; } // Create a new project object from build target UnityEditor.iOS.Xcode.PBXProject project = new UnityEditor.iOS.Xcode.PBXProject(); string configFilePath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath(pathToBuiltProject); project.ReadFromFile(configFilePath); string targetGuid = project.TargetGuidByName("Unity-iPhone"); string debug = project.BuildConfigByName(targetGuid, "Debug"); string release = project.BuildConfigByName(targetGuid, "Release"); project.AddBuildPropertyForConfig(debug, "CODE_SIGN_RESOURCE_RULES_PATH", "$(SDKROOT)/ResourceRules.plist"); project.AddBuildPropertyForConfig(release, "CODE_SIGN_RESOURCE_RULES_PATH", "$(SDKROOT)/ResourceRules.plist"); project.AddFrameworkToProject(targetGuid, "SystemConfiguration.framework", true); project.AddFrameworkToProject(targetGuid, "Security.framework", true); project.AddFrameworkToProject(targetGuid, "libz.tbd", true); project.AddFrameworkToProject(targetGuid, "libc++.tbd", true); project.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); project.WriteToFile(configFilePath); EditSuitIpXCode(pathToBuiltProject); }
//设置编译属性 private static void SetBuildProperties(PBXProject proj, Hashtable table) { if (table != null) { string target = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); Hashtable setTable = table.SGet <Hashtable>("="); foreach (DictionaryEntry i in setTable) { proj.SetBuildProperty(target, i.Key.ToString(), i.Value.ToString()); } Hashtable addTable = table.SGet <Hashtable>("+"); foreach (DictionaryEntry i in addTable) { ArrayList array = i.Value as ArrayList; List <string> list = new List <string>(); foreach (var flag in array) { list.Add(flag.ToString()); } proj.UpdateBuildProperty(target, i.Key.ToString(), list, null); } Hashtable removeTable = table.SGet <Hashtable>("-"); foreach (DictionaryEntry i in removeTable) { ArrayList array = i.Value as ArrayList; List <string> list = new List <string>(); foreach (var flag in array) { list.Add(flag.ToString()); } proj.UpdateBuildProperty(target, i.Key.ToString(), null, list); } } }
private static void OnPostprocessBuildIOS(string pathToBuiltProject) { // We use UnityEditor.iOS.Xcode API which only exists in iOS editor module #if UNITY_IOS string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; UnityEditor.iOS.Xcode.PBXProject proj = new UnityEditor.iOS.Xcode.PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); proj.AddFrameworkToProject(proj.TargetGuidByName("Unity-iPhone"), "ARKit.framework", false); string target = proj.TargetGuidByName("Unity-iPhone"); proj.SetBuildProperty(target, "DEVELOPMENT_TEAM", "Z6SFPV59E3"); Directory.CreateDirectory(Path.Combine(pathToBuiltProject, "Libraries/Unity")); string[] filesToCopy = new string[] { }; for (int i = 0; i < filesToCopy.Length; ++i) { var srcPath = Path.Combine("../PluginSource/source", filesToCopy[i]); var dstLocalPath = "Libraries/" + filesToCopy[i]; var dstPath = Path.Combine(pathToBuiltProject, dstLocalPath); File.Copy(srcPath, dstPath, true); proj.AddFileToBuild(target, proj.AddFile(dstLocalPath, dstLocalPath)); } File.WriteAllText(projPath, proj.WriteToString()); #endif // #if UNITY_IOS }
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()); }
public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { UnityEngine.Debug.Log("OnPostprocessBuild "+buildTarget+" "+path); if (buildTarget == BuildTarget.iOS) { string projectPath = PBXProject.GetPBXProjectPath(path); PBXProject project = new PBXProject(); project.ReadFromFile(projectPath); UnityEngine.Debug.Log(PBXProject.GetUnityTargetName()); string target = project.TargetGuidByName(PBXProject.GetUnityTargetName()); UnityEngine.Debug.Log(target); // Add build settings for CocoaPods project.AddBuildProperty(target, "HEADER_SEARCH_PATHS", "$(inherited)"); project.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); project.AddBuildProperty(target, "OTHER_CFLAGS", "$(inherited)"); project.AddBuildProperty(target, "OTHER_LDFLAGS", "$(inherited)"); // Disable Bitcode project.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); // Copy Podfile into project string unityProjectRootPath = Path.GetFullPath("./").Normalize(); UnityEngine.Debug.Log(unityProjectRootPath); // Default src location is the project root FileUtil.ReplaceFile("Assets/DeltaDNAAds/Editor/iOS/Podfile", path + "/Podfile"); // Set Podfile platform version to match Unity #if UNITY_5_5_OR_NEWER var targetOSVersion = PlayerSettings.iOS.targetOSVersionString; string iosPlatform = targetOSVersion.ToString(); UnityEngine.Debug.Log(iosPlatform); #else var targetOSVersion = PlayerSettings.iOS.targetOSVersion; string iosPlatform = targetOSVersion.ToString().Substring(4).Replace('_', '.'); #endif var podfile = new List<string>(File.ReadAllLines(path + "/Podfile")); podfile = new List<string>(podfile.Select(e => e.StartsWith("platform") ? string.Format("platform :ios, '{0}'", iosPlatform) : e).AsEnumerable()); File.WriteAllLines(path + "/Podfile", podfile.ToArray()); // Update the XCode project on disk project.WriteToFile(projectPath); // Run pod update Process proc = new Process(); proc.StartInfo.FileName = "/usr/local/bin/pod"; proc.StartInfo.Arguments = "install --project-directory=\""+path+"\""; proc.StartInfo.UseShellExecute = false; proc.Start(); proc.WaitForExit(); } }
//设置Capabilities void SetCapabilities(string pathToBuildProject) { string projPath = pathToBuildProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; //项目路径,这个路径在mac上默认是不显示的,需要右键->显示包内容才能看到。unity到处的名字就是这个。 UnityEditor.iOS.Xcode.PBXProject pbxProj = new UnityEditor.iOS.Xcode.PBXProject(); //创建xcode project类 pbxProj.ReadFromString(File.ReadAllText(projPath)); //xcode project读入 string targetGuid = pbxProj.TargetGuidByName(PBXProject.GetUnityTargetName()); //获得Target名 //设置BuildSetting pbxProj.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO"); pbxProj.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", "-ObjC"); pbxProj.SetBuildProperty(targetGuid, "DEBUG_INFORMATION_FORMAT", "dwarf-with-dsym"); //定位崩溃bug pbxProj.SetBuildProperty(targetGuid, "EXCLUDED_ARCHS", "armv7"); pbxProj.AddFrameworkToProject(targetGuid, "MediaPlayer.framework", false); pbxProj.AddFrameworkToProject(targetGuid, "AdSupport.framework", true); //添加资源 pbxProj.AddFileToBuild(targetGuid, pbxProj.AddFile(System.Environment.CurrentDirectory + "/LTBaseSDK_Oversea/ltgame.cfg", "Resource/ltgame.cfg", PBXSourceTree.Source)); //修改编译方式 string mmfile = pbxProj.FindFileGuidByProjectPath("Classes/UnityAppController.mm"); var flags = pbxProj.GetCompileFlagsForFile(targetGuid, mmfile); flags.Add("-fno-objc-arc"); pbxProj.SetCompileFlagsForFile(targetGuid, mmfile, flags); mmfile = pbxProj.FindFileGuidByProjectPath("Libraries/Plugins/IOS/LTSDK/LTSDKNPC.mm"); flags = pbxProj.GetCompileFlagsForFile(targetGuid, mmfile); flags.Add("-fno-objc-arc"); pbxProj.SetCompileFlagsForFile(targetGuid, mmfile, flags); pbxProj.WriteToFile(projPath); string[] splits = PlayerSettings.applicationIdentifier.Split('.'); var capManager = new ProjectCapabilityManager(projPath, splits[splits.Length - 1] + ".entitlements", PBXProject.GetUnityTargetName());//创建设置Capability类 if (PlayerSettings.applicationIdentifier.Equals("com.longtugame.dzyz.longtu")) { //正式包,增加计费 capManager.AddInAppPurchase(); } capManager.AddAssociatedDomains(new[] { "applinks:dy.longtugame.com" }); capManager.WriteToFile();//写入文件保存 }
// 添加动态库 注意路径 public static void AddFramework(string coreFrameworkName, UnityEditor.iOS.Xcode.PBXProject proj, string target) { const string defaultLocationInProj = "Library/"; string framework = Path.Combine(defaultLocationInProj, coreFrameworkName); string fileGuid = proj.AddFile(framework, "Frameworks/" + framework, PBXSourceTree.Sdk); PBXProjectExtensions.AddFileToEmbedFrameworks(proj, target, fileGuid); proj.SetBuildProperty(target, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks"); }
public static void OnPostProcessBuild(BuildTarget target, string path) { #if UNITY_IPHONE if (target != BuildTarget.iOS) return; string buildName = Path.GetFileNameWithoutExtension(path); string pbxprojPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(pbxprojPath)); string buildTarget = proj.TargetGuidByName("Unity-iPhone"); DirectoryInfo projectParent = Directory.GetParent(Application.dataPath); char divider = Path.DirectorySeparatorChar; DirectoryInfo destinationFolder = new DirectoryInfo(path + divider + "Frameworks"); foreach(DirectoryInfo file in destinationFolder.GetDirectories()) { string filePath = "Frameworks/"+ file.Name; proj.AddFile(filePath, filePath, PBXSourceTree.Source); proj.AddFrameworkToProject (buildTarget, file.Name, false); } proj.SetBuildProperty( buildTarget, "FRAMEWORK_SEARCH_PATHS", "$(SRCROOT)/Frameworks" ); proj.AddBuildProperty( buildTarget, "FRAMEWORK_SEARCH_PATHS", "$(inherited)" ); proj.SetBuildProperty(buildTarget, "CLANG_ENABLE_MODULES", "YES"); File.WriteAllText(pbxprojPath, proj.WriteToString()); #endif }
private static void fixPbxproject(string path) { #if UNITY_IOS UnityEditor.iOS.Xcode.PBXProject pbxProj = new UnityEditor.iOS.Xcode.PBXProject(); pbxProj.ReadFromFile(path); string targetGuid = pbxProj.TargetGuidByName("Unity-iPhone"); pbxProj.SetBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); pbxProj.WriteToFile(path); AddDynamicFrameworksForUnity5(path); #endif }
private static void configureSwiftBuild(string targetPath) { var projPath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath(targetPath); var proj = new UnityEditor.iOS.Xcode.PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); #if UNITY_2019_3_OR_NEWER var targetGuid = proj.GetUnityFrameworkTargetGuid(); #else var targetGuid = proj.TargetGuidByName("Unity-iPhone"); #endif proj.SetBuildProperty(targetGuid, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES"); proj.SetBuildProperty(targetGuid, "SWIFT_VERSION", "5.0"); #if UNITY_2019_3_OR_NEWER string podFilePath = Path.Combine(targetPath, "Podfile"); string podFileContents = File.ReadAllText(podFilePath); string targetUnityiPhone = "\ntarget 'Unity-iPhone' do"; string inheritSearchPaths = "\n inherit! :search_paths"; if (podFileContents.Contains("Unity-iPhone")) { podFileContents = podFileContents.Replace(targetUnityiPhone, targetUnityiPhone + inheritSearchPaths); File.WriteAllText(podFilePath, podFileContents); } else { File.AppendAllText(podFilePath, targetUnityiPhone + inheritSearchPaths + "\nend"); } File.AppendAllText(podFilePath, "\npost_install do |installer|\n installer.pods_project.targets.each do |target|\n target.build_configurations.each do |config|\n if ['RxSwift', 'Willow'].include? target.name\n config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'\n end\n end\n end\n end"); var iphoneGuid = proj.GetUnityMainTargetGuid(); proj.SetBuildProperty(iphoneGuid, "SWIFT_OBJC_BRIDGING_HEADER", "Libraries/ScaleMonk Ads/Plugins/iOS/SMAds-Bridging-Header.h"); #else proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_BRIDGING_HEADER", "Libraries/ScaleMonk Ads/Plugins/iOS/SMAds-Bridging-Header.h"); using (var sw = File.AppendText(targetPath + "/Podfile")) { sw.WriteLine("\npost_install do |installer|\n installer.pods_project.targets.each do |target|\n target.build_configurations.each do |config|\n if ['RxSwift', 'Willow'].include? target.name\n config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'\n end\n end\n end\n end"); } #endif proj.SetBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); proj.SetBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks"); File.WriteAllText(projPath, proj.WriteToString()); }
public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); proj.AddFileToBuild(target, proj.AddFile("usr/lib/Security.framework", "Frameworks/Security.framework", PBXSourceTree.Sdk)); proj.SetBuildProperty(target, "ENABLE_BITCODE", "false"); File.WriteAllText(projPath, proj.WriteToString()); } }
public static void OnPostProcessBuild(BuildTarget buildTarget, string path) { #if UNITY_IPHONE if (buildTarget == BuildTarget.iOS) { Debug.Log("DisableBitCodePostProcessor - start"); string projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; UnityEditor.iOS.Xcode.PBXProject pbxProject = new UnityEditor.iOS.Xcode.PBXProject(); pbxProject.ReadFromFile(projectPath); string target = pbxProject.TargetGuidByName("Unity-iPhone"); pbxProject.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); pbxProject.WriteToFile(projectPath); Debug.Log("DisableBitCodePostProcessor - done"); } #endif }
static void _AddDeviceCapabilities(string path) { string pbxprojPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject project = new PBXProject(); project.ReadFromString(File.ReadAllText(pbxprojPath)); string target = project.TargetGuidByName("Unity-iPhone"); project.AddFrameworkToProject(target, "AdSupport.framework", false); project.AddFrameworkToProject(target, "AudioToolbox.framework", false); project.AddFrameworkToProject(target, "AVFoundation.framework", false); project.AddFrameworkToProject(target, "CoreGraphics.framework", false); project.AddFrameworkToProject(target, "CoreTelephony.framework", false); project.AddFrameworkToProject(target, "EventKit.framework", false); project.AddFrameworkToProject(target, "EventKitUI.framework", false); project.AddFrameworkToProject(target, "MessageUI.framework", false); project.AddFrameworkToProject(target, "StoreKit.framework", false); project.AddFrameworkToProject(target, "SystemConfiguration.framework", false); project.SetBuildProperty(target, "CLANG_ENABLE_MODULES", "YES"); File.WriteAllText(pbxprojPath, project.WriteToString()); string infoPlistPath = Path.Combine(path, "./Info.plist"); PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(infoPlistPath)); PlistElementDict rootDict = plist.root; PlistElementArray deviceCapabilityArray = rootDict.CreateArray("UIRequiredDeviceCapabilities"); deviceCapabilityArray.AddString("armv7"); deviceCapabilityArray.AddString("gamekit"); rootDict.SetBoolean("UIRequiresFullScreen", true); File.WriteAllText(infoPlistPath, plist.WriteToString()); }
public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); // Add user packages to project. Most other source or resource files and packages // can be added the same way. /* CopyAndReplaceDirectory("NativeAssets/TestLib.bundle", Path.Combine(path, "Frameworks/TestLib.bundle")); proj.AddFileToBuild(target, proj.AddFile("Frameworks/TestLib.bundle", "Frameworks/TestLib.bundle", PBXSourceTree.Source)); CopyAndReplaceDirectory("NativeAssets/TestLib.framework", Path.Combine(path, "Frameworks/TestLib.framework")); proj.AddFileToBuild(target, proj.AddFile("Frameworks/TestLib.framework", "Frameworks/TestLib.framework", PBXSourceTree.Source)); */ // Add custom system frameworks. Duplicate frameworks are ignored. // needed by our native plugin in Assets/Plugins/iOS proj.AddFrameworkToProject(target, "MessageUI.framework", false /*not weak*/); // Add our framework directory to the framework include path proj.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); // Set a custom link flag proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); File.WriteAllText(projPath, proj.WriteToString()); } }
public static void OnPostProcessBuild (BuildTarget buildTarget, string path) { #if UNITY_ANDROID #elif UNITY_IPHONE string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject pbxProj = new PBXProject (); pbxProj.ReadFromFile (projPath); string target = pbxProj.TargetGuidByName (PBXProject.GetUnityTargetName ()); pbxProj.AddFrameworkToProject (target, "AssetsLibrary.framework", false); pbxProj.AddFrameworkToProject (target, "AudioToolbox.framework", false); pbxProj.AddFrameworkToProject (target, "AVFoundation.framework", false); pbxProj.AddFrameworkToProject (target, "CFNetwork.framework", false); pbxProj.AddFrameworkToProject (target, "CoreAudio.framework", false); pbxProj.AddFrameworkToProject (target, "CoreLocation.framework", false); pbxProj.AddFrameworkToProject (target, "CoreMedia.framework", false); pbxProj.AddFrameworkToProject (target, "CoreTelephony.framework", false); pbxProj.AddFrameworkToProject (target, "CoreVideo.framework", false); pbxProj.AddFrameworkToProject (target, "CoreGraphics.framework", false); pbxProj.AddFrameworkToProject (target, "ImageIO.framework", false); pbxProj.AddFileToBuild (target, pbxProj.AddFile ("usr/lib/libc++.dylib", "Frameworks/libc++.dylib", PBXSourceTree.Sdk)); pbxProj.AddFileToBuild (target, pbxProj.AddFile ("usr/lib/libc++abi.dylib", "Frameworks/libc++abi.dylib", PBXSourceTree.Sdk)); pbxProj.AddFileToBuild (target, pbxProj.AddFile ("usr/lib/libsqlite3.dylib", "Frameworks/libsqlite3.dylib", PBXSourceTree.Sdk)); pbxProj.AddFileToBuild (target, pbxProj.AddFile ("usr/lib/libstdc++.dylib", "Frameworks/libstdc++.dylib", PBXSourceTree.Sdk)); pbxProj.AddFileToBuild (target, pbxProj.AddFile ("usr/lib/libxml2.dylib", "Frameworks/libxml2.dylib", PBXSourceTree.Sdk)); pbxProj.AddFileToBuild (target, pbxProj.AddFile ("usr/lib/libz.dylib", "Frameworks/libz.dylib", PBXSourceTree.Sdk)); pbxProj.AddFrameworkToProject (target, "MapKit.framework", false); pbxProj.AddFrameworkToProject (target, "OpenGLES.framework", false); pbxProj.AddFrameworkToProject (target, "QuartzCore.framework", false); pbxProj.AddFrameworkToProject (target, "SystemConfiguration.framework", false); pbxProj.AddFrameworkToProject (target, "UIKit.framework", false); DirectoryInfo di = new DirectoryInfo (Application.dataPath); string rongCloudLibFloder = Path.Combine (di.Parent.FullName, "RongCloudLib"); CopyAndReplaceDirectory(Path.Combine (rongCloudLibFloder, "RongIMLib.framework"), Path.Combine(path, "Frameworks/RongIMLib.framework")); pbxProj.AddFileToBuild(target, pbxProj.AddFile("Frameworks/RongIMLib.framework", "Frameworks/RongIMLib.framework", PBXSourceTree.Source)); // pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (rongCloudLibFloder, "RongIMLib.framework"), "Frameworks/RongIMLib.framework", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/RongCloudBinding.m"), "Libraries/RongCloudBinding.m", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/RongCloudManager.m"), "Libraries/RongCloudManager.m", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/RongCloudManager.h"), "Libraries/RongCloudManager.h", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/GroupOperationMessage.h"), "Libraries/GroupOperationMessage.h", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/GroupOperationMessage.m"), "Libraries/GroupOperationMessage.m", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/GroupRequestMessage.h"), "Libraries/GroupRequestMessage.h", PBXSourceTree.Absolute)); pbxProj.AddFileToBuild (target, pbxProj.AddFile (Path.Combine (Application.dataPath, "Editor/RongCloud/iOS/GroupRequestMessage.m"), "Libraries/GroupRequestMessage.m", PBXSourceTree.Absolute)); pbxProj.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); pbxProj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); pbxProj.WriteToFile (projPath); PlistDocument plist = new PlistDocument (); string plistPath = Path.Combine (path, "Info.plist"); plist.ReadFromFile (plistPath); var deviceCapabilities = plist.root ["UIRequiredDeviceCapabilities"].AsArray (); deviceCapabilities.AddString ("front-facing-camera"); deviceCapabilities.AddString ("video-camera"); // plist.root.SetBoolean ("LSHasLocalizedDisplayName", true); plist.WriteToFile (plistPath); #endif }
private static void OnPostprocessBuild(BuildTarget buildTarget, string buildPath) { //iOS以外にビルドしている場合は更新処理を行わないように if (buildTarget != BuildTarget.iOS){ return; } //Xcodeの設定データを読み込む XcodeProjectSetting setting = Resources.Load<XcodeProjectSetting>(SETTING_DATA_PATH); if(setting == null){ Debug.Log ("Resources/" + SETTING_DATA_PATH + "がありません!"); return; } //Xcodeプロジェクトの読み込み string pbxProjPath = PBXProject.GetPBXProjectPath(buildPath); PBXProject pbxProject = new PBXProject(); pbxProject.ReadFromString(File.ReadAllText(pbxProjPath)); //ターゲットのID取得 string targetGuid = pbxProject.TargetGuidByName(PBXProject.GetUnityTargetName()); //指定ディレクトリ内のファイルを全てコピーする if(!string.IsNullOrEmpty(setting.CopyDirectoryPath)){ DirectoryProcessor.CopyAndAddBuildToXcode (pbxProject, targetGuid, setting.CopyDirectoryPath, buildPath, ""); } //コンパイラフラグの設定 foreach (XcodeProjectSetting.CompilerFlagsSet compilerFlagsSet in setting.CompilerFlagsSetList) { foreach (string targetPath in compilerFlagsSet.TargetPathList) { if(!pbxProject.ContainsFileByProjectPath(targetPath)){ Debug.Log (targetPath + "が無いのでコンパイラフラグが設定できませんでした"); continue; } string fileGuid = pbxProject.FindFileGuidByProjectPath(targetPath); List<string> flagsList = pbxProject.GetCompileFlagsForFile(targetGuid, fileGuid); flagsList.Add(compilerFlagsSet.Flags); pbxProject.SetCompileFlagsForFile(targetGuid, fileGuid, flagsList); } } //システムのフレームワークを追加 foreach (string framework in setting.FrameworkList) { pbxProject.AddFrameworkToProject(targetGuid, framework, false); } //Linker Flagの設定 pbxProject.UpdateBuildProperty(targetGuid, XcodeProjectSetting.LINKER_FLAG_KEY, setting.LinkerFlagArray, null); //フレームワークがあるディレクトリへのパス設定 pbxProject.UpdateBuildProperty(targetGuid, XcodeProjectSetting.FRAMEWORK_SEARCH_PATHS_KEY, setting.FrameworkSearchPathArray, null); //BitCodeの設定 pbxProject.SetBuildProperty(targetGuid, XcodeProjectSetting.ENABLE_BITCODE_KEY, setting.EnableBitCode ? "YES" : "NO"); //プロジェクトファイル書き出し File.WriteAllText(pbxProjPath, pbxProject.WriteToString()); //URLスキームの設定 List<string> urlSchemeList = new List<string>(setting.URLSchemeList); InfoPlistProcessor.SetURLSchemes (buildPath, setting.URLIdentifier, urlSchemeList); //デフォルトで設定されているスプラッシュ画像の設定を消す if(setting.NeedToDeleteLaunchiImagesKey){ InfoPlistProcessor.DeleteLaunchiImagesKey (buildPath); } //ATSの設定 InfoPlistProcessor.SetATS (buildPath, setting.EnableATS); //ステータスバーの設定 InfoPlistProcessor.SetStatusBar (buildPath, setting.EnableStatusBar); }
static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget != BuildTarget.iOS) return; /*------------------------------------------------------*/ // for frameworks string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; Debug.Log("Build iOS. path: " + projPath); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); // string debugConfig = proj.BuildConfigByName(target, "Debug"); // string releaseConfig = proj.BuildConfigByName(target, "Release"); // Add custom system frameworks. Duplicate frameworks are ignored. // needed by our native plugin in Assets/Plugins/iOS // proj.AddFrameworkToProject(target, ".framework", false /*not weak*/); // Add usr/lib string framenwork1 = "libz.dylib"; string framenwork2 = "libsqlite3.0.dylib"; string fileGuid1 = proj.AddFile ("usr/lib/"+framenwork1, "Frameworks/"+framenwork1, PBXSourceTree.Sdk); string fileGuid2 = proj.AddFile ("usr/lib/"+framenwork2, "Frameworks/"+framenwork2, PBXSourceTree.Sdk); proj.AddFileToBuild (target, fileGuid1); proj.AddFileToBuild (target, fileGuid2); // Add our framework directory to the framework include path proj.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks"); // proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); proj.AddBuildProperty(target, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES"); File.WriteAllText(projPath, proj.WriteToString()); /*------------------------------------------------------*/ // for Info.plist // PlistDocument // http://docs.unity3d.com/ScriptReference/iOS.Xcode.PlistDocument.html // Get plist var plistPath = Path.Combine(path, "Info.plist"); var plist = new PlistDocument(); plist.ReadFromFile(plistPath); // Get root PlistElementDict rootDict = plist.root; // Create URL types string identifier = PlayerPrefs.GetString ("identifier"); string scheme = PlayerPrefs.GetString ("scheme"); PlistElementArray urlTypesArray = rootDict.CreateArray ("CFBundleURLTypes"); PlistElementDict dict = urlTypesArray.AddDict (); dict.SetString ("CFBundleURLName", identifier); PlistElementArray schemesArray = dict.CreateArray ("CFBundleURLSchemes"); schemesArray.AddString (scheme); // PlistElementArray urlTypesArray = rootDict.CreateArray ("CFBundleURLTypes"); // PlistElementDict dict = urlTypesArray.AddDict (); // dict.SetString ("CFBundleURLName", "com.unitybuild.test"); // PlistElementArray schemesArray = dict.CreateArray ("CFBundleURLSchemes"); // schemesArray.AddString ("myscheme"); // Write to file File.WriteAllText(plistPath, plist.WriteToString()); }
public static void OnPostProcessBuild(BuildTarget target, string path) { var pbxProjectPath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath(path); var pbxProject = new UnityEditor.iOS.Xcode.PBXProject(); pbxProject.ReadFromString(System.IO.File.ReadAllText(pbxProjectPath)); Debug.Log("TTPPostProcessSettings::Add swift support for mopub and ecpm"); pbxProject.AddBuildProperty(GetTargetGUID(pbxProject), "LIBRARY_SEARCH_PATHS", "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)"); pbxProject.AddBuildProperty(GetTargetGUID(pbxProject), "LIBRARY_SEARCH_PATHS", "$(SDKROOT)/usr/lib/swift"); pbxProject.SetBuildProperty(GetTargetGUID(pbxProject), "LD_RUNPATH_SEARCH_PATHS", "/usr/lib/swift $(inherited) @executable_path/Frameworks"); pbxProject.SetBuildProperty(GetTargetGUID(pbxProject), "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); pbxProject.SetBuildProperty(GetTargetGUID(pbxProject), "SWIFT_VERSION", "5"); #if UNITY_2019_3_OR_NEWER var unityFrameworkTarget = pbxProject.GetUnityFrameworkTargetGuid(); pbxProject.AddBuildProperty(unityFrameworkTarget, "LIBRARY_SEARCH_PATHS", "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)"); pbxProject.AddBuildProperty(unityFrameworkTarget, "LIBRARY_SEARCH_PATHS", "$(SDKROOT)/usr/lib/swift"); pbxProject.SetBuildProperty(unityFrameworkTarget, "LD_RUNPATH_SEARCH_PATHS", "/usr/lib/swift $(inherited) @executable_path/Frameworks"); pbxProject.SetBuildProperty(unityFrameworkTarget, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); pbxProject.SetBuildProperty(unityFrameworkTarget, "SWIFT_VERSION", "5"); var mainTargetLinkFrameworksId = pbxProject.GetFrameworksBuildPhaseByTarget(pbxProject.GetUnityMainTargetGuid()); var unityFrameworkBuildProductId = pbxProject.GetTargetProductFileRef(pbxProject.GetUnityFrameworkTargetGuid()); Debug.Log("Linking unity framework to main target to support unity 2020 - " + mainTargetLinkFrameworksId + ", " + unityFrameworkBuildProductId); pbxProject.AddFileToBuildSection(pbxProject.GetUnityMainTargetGuid(), mainTargetLinkFrameworksId, unityFrameworkBuildProductId); #endif #if UNITY_2019_3_OR_NEWER //Add BUAdASDK.bundle string pathToBUAdSDK = "Data/Raw/Bundle/BUAdSDK.bundle"; string absPathToBUADSDK = Path.Combine(path, pathToBUAdSDK); if (Directory.Exists(absPathToBUADSDK)) { Debug.Log("TTPPostProcessSettings :: Adding BUAdSDK.bundle"); pbxProject.AddFileToBuild(GetTargetGUID(pbxProject), pbxProject.AddFile(pathToBUAdSDK, "BUAdSDK.bundle")); } else { Debug.Log("TTPPostProcessSettings :: BUAdSDK.bundle not exists"); } //END BUAdSDK string pathToTapJoyBundle = "Data/Raw/Bundle/TapjoyResources.bundle"; string absPathTapJoyBundle = Path.Combine(path, pathToBUAdSDK); if (Directory.Exists(absPathTapJoyBundle)) { Debug.Log("TTPPostProcessSettings :: Adding TapjoyResources.bundle"); pbxProject.AddFileToBuild(GetTargetGUID(pbxProject), pbxProject.AddFile(pathToTapJoyBundle, "TapjoyResources.bundle")); } else { Debug.Log("TTPAddTiktokBundle.cs :: TapjoyResources.bundle not exists"); } #endif File.WriteAllText(pbxProjectPath, pbxProject.WriteToString()); var plistPath = Path.Combine(path, "Info.plist"); var plist = new PlistDocument(); plist.ReadFromFile(plistPath); rootDict = plist.root; rootDict.SetBoolean("GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS", false); rootDict.SetBoolean("FIREBASE_ANALYTICS_COLLECTION_ENABLED", false); // Add AppLovinSdkKey if (Application.identifier == "com.tabtaleint.ttplugins" || Application.identifier == "com.tabtaleint.ttplugins" || Application.identifier == "com.tabtaleint.ttplugins") { rootDict.SetString("AppLovinSdkKey", "yRHC8kgWwG5S4lOh7Dx_pZB2iEBLVWMSzde5MKbGahifQ6MTKIT7tk9ZzLvTsFwptZvDuVTTBB8cHU9bohkeQu"); } else { rootDict.SetString("AppLovinSdkKey", "TREvWeSbneklepMTdxWL5KCqUD57xezP4CIarlBcOwM1kiVMe0hkLvTq7dy3HwSL6mxyV7Tu1wwlcP5FQo-nhW"); } var array = rootDict.CreateArray("SKAdNetworkItems"); //admob array.AddDict().SetString("SKAdNetworkIdentifier", "cstr6suwn9.skadnetwork"); //applovin array.AddDict().SetString("SKAdNetworkIdentifier", "ludvb6z3bs.skadnetwork"); //ironsource array.AddDict().SetString("SKAdNetworkIdentifier", "su67r6k2v3.skadnetwork"); //adcolony array.AddDict().SetString("SKAdNetworkIdentifier", "4pfyvq9l8r.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "4fzdc2evr5.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "4468km3ulz.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "3rd42ekr43.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "m8dbw4sv7c.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "ejvt5qm6ak.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "mtkv5xtk9e.skadnetwork"); //chartboost array.AddDict().SetString("SKAdNetworkIdentifier", "f38h382jlk.skadnetwork"); //facebook array.AddDict().SetString("SKAdNetworkIdentifier", "v9wttpbfk9.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "n38lu8286q.skadnetwork"); //hypermx array.AddDict().SetString("SKAdNetworkIdentifier", "nu4557a4je.skadnetwork"); //inmobi array.AddDict().SetString("SKAdNetworkIdentifier", "wzmmz9fp6w.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "uw77j35x4d.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "7ug5zh24hu.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "hs6bdukanm.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "ggvn48r87g.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "5lm9lj6jb7.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "9rd848q2bz.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "c6k4g5qg8m.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "3sh42y64q3.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "yclnxrl5pm.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "f73kdq92p3.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "ydx93a7ass.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "w9q455wk68.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "prcb7njmu6.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "wg4vff78zm.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "mlmmfzh3r3.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "tl55sbb4fm.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "t38b2kh725.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "5l3tpt7t6e.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "7rz58n8ntl.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "klf5c3l5u5.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "cg4yq2srnc.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "av6w8kgt66.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "9t245vhmpl.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "v72qych5uu.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "2u9pt9hc89.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "44jx6755aq.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "8s468mfl3y.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "p78axxw29g.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "ppxm28t8ap.skadnetwork"); //mintegral array.AddDict().SetString("SKAdNetworkIdentifier", "kbd757ywx3.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "glqzh8vgby.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "6xzpu9s2p8.skadnetwork"); //pangle array.AddDict().SetString("SKAdNetworkIdentifier", "22mmun2rn5.skadnetwork"); //non cn array.AddDict().SetString("SKAdNetworkIdentifier", "238da6jt44.skadnetwork"); //cn //tapjoy array.AddDict().SetString("SKAdNetworkIdentifier", "ecpz2srf59.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "578prtvx9j.skadnetwork"); //unity ads array.AddDict().SetString("SKAdNetworkIdentifier", "4dzt52r2t5.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "488r3q3dtq.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "zmvfpc5aq8.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "v79kvwwj4g.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "lr83yxwka7.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "44n7hlldy6.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "424m5254lk.skadnetwork"); //vungle array.AddDict().SetString("SKAdNetworkIdentifier", "gta9lk7p23.skadnetwork"); //mopub array.AddDict().SetString("SKAdNetworkIdentifier", "cdkw7geqsh.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "qyjfv329m4.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "3qy4746246.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "523jb4fst2.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "5a6flpkh64.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "737z793b9f.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "7953jerfzd.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "97r2b46745.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "9yg77x724h.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "bvpn9ufa9b.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "cj5566h2ga.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "gvmwg8q7h5.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "mls7yz5dvl.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "n66cz3y3bx.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "n9x2a789qt.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "nzq8sh4pbs.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "pu4na253f3.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "u679fj5vs4.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "xy9t38ct57.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "z4gj7hsk7h.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "s39g8k73mm.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "24t9a8vw3c.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "yrqqpx2mcb.skadnetwork"); array.AddDict().SetString("SKAdNetworkIdentifier", "52fl2v3hgk.skadnetwork"); // fix problem with statusbar on iOS 14 if (!rootDict.values.ContainsKey("UIViewControllerBasedStatusBarAppearance")) { rootDict.SetBoolean("UIViewControllerBasedStatusBarAppearance", false); } File.WriteAllText(plistPath, plist.WriteToString()); }
/// <summary> /// Updates the generated pbxproj to reduce manual work required by developers. Currently /// this adds the '-fobjc-arc' flag for the Play Games ObjC source file. /// </summary> /// <param name="pbxprojPath">Pbxproj path.</param> private static void UpdateGeneratedPbxproj(string pbxprojPath) { PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(pbxprojPath)); string target = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); string testTarget = proj.TargetGuidByName(PBXProject.GetUnityTestTargetName()); proj.AddBuildProperty(target, "OTHER_LDFLAGS", "$(inherited)"); proj.AddBuildProperty(testTarget, "OTHER_LDFLAGS", "$(inherited)"); proj.AddBuildProperty(target, "HEADER_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(testTarget, "HEADER_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(target, "OTHER_CFLAGS", "$(inherited)"); proj.AddBuildProperty(testTarget, "OTHER_CFLAGS", "$(inherited)"); proj.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); proj.SetBuildProperty(testTarget, "ENABLE_BITCODE", "NO"); string fileGuid = proj.FindFileGuidByProjectPath("Libraries/Plugins/iOS/GPGSAppController.mm"); if (fileGuid == null) { // look in the legacy location fileGuid = proj.FindFileGuidByProjectPath("Libraries/GPGSAppController.mm"); } List<string> list = new List<string>(); list.Add("-fobjc-arc"); proj.SetCompileFlagsForFile(target, fileGuid, list); File.WriteAllText(pbxprojPath, proj.WriteToString()); }
private static void OnPostprocessBuildIOS(string pathToBuiltProject) { // We use UnityEditor.iOS.Xcode API which only exists in iOS editor module #if UNITY_IOS string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; UnityEditor.iOS.Xcode.PBXProject proj = new UnityEditor.iOS.Xcode.PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); proj.AddFrameworkToProject(proj.TargetGuidByName("Unity-iPhone"), "ARKit.framework", false); string target = proj.TargetGuidByName("Unity-iPhone"); Directory.CreateDirectory(Path.Combine(pathToBuiltProject, "Libraries/Unity")); // Check UnityARKitPluginSettings UnityARKitPluginSettings ps = LoadSettings(); string plistPath = Path.Combine(pathToBuiltProject, "Info.plist"); PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); PlistElementDict rootDict = plist.root; // Get or create array to manage device capabilities const string capsKey = "UIRequiredDeviceCapabilities"; PlistElementArray capsArray; PlistElement pel; if (rootDict.values.TryGetValue(capsKey, out pel)) { capsArray = pel.AsArray(); } else { capsArray = rootDict.CreateArray(capsKey); } // Remove any existing "arkit" plist entries const string arkitStr = "arkit"; capsArray.values.RemoveAll(x => arkitStr.Equals(x.AsString())); if (ps.AppRequiresARKit) { // Add "arkit" plist entry capsArray.AddString(arkitStr); } File.WriteAllText(plistPath, plist.WriteToString()); foreach (ARReferenceImagesSet ar in imageSets) { AddReferenceImagesSetToAssetCatalog(ar, pathToBuiltProject, proj); } //TODO: remove this when XCode actool is able to handles ARResources despite deployment target if (imageSets.Count > 0) { proj.SetBuildProperty(target, "IPHONEOS_DEPLOYMENT_TARGET", "11.3"); } // Add or replace define for facetracking UpdateDefinesInFile(pathToBuiltProject + "/Classes/Preprocessor.h", new Dictionary <string, bool>() { { "ARKIT_USES_FACETRACKING", ps.m_ARKitUsesFacetracking } }); string[] filesToCopy = new string[] { }; for (int i = 0; i < filesToCopy.Length; ++i) { var srcPath = Path.Combine("../PluginSource/source", filesToCopy[i]); var dstLocalPath = "Libraries/" + filesToCopy[i]; var dstPath = Path.Combine(pathToBuiltProject, dstLocalPath); File.Copy(srcPath, dstPath, true); proj.AddFileToBuild(target, proj.AddFile(dstLocalPath, dstLocalPath)); } File.WriteAllText(projPath, proj.WriteToString()); #endif // #if UNITY_IOS }