static void ModifyPbxProject(string path) { string projPath = PBXProject.GetPBXProjectPath(buildPath: path); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(path: projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); proj.SetBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries/Plugins/iOS"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries/Plugins/iOS/WeChatSDK1.8.4"); // Add Framework proj.AddFrameworkToProject(targetGuid: target, "libz.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "libc++.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "libsqlite3.0.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "CoreFoundation.framework", false); proj.AddFrameworkToProject(targetGuid: target, "libresolv.tbd", false); proj.AddFrameworkToProject(targetGuid: target, "UserNotifications.framework", false); proj.AddFrameworkToProject(targetGuid: target, "CoreTelephony.framework", true); proj.AddBuildProperty(targetGuid: target, "OTHER_LDFLAGS", "-ObjC"); proj.AddBuildProperty(targetGuid: target, "OTHER_LDFLAGS", "-all_load"); // 读取 Preprocessor.h 文件 var preprocessor = new XClass(path + "/Classes/Preprocessor.h"); preprocessor.Replace("#define UNITY_USES_REMOTE_NOTIFICATIONS 0", "#define UNITY_USES_REMOTE_NOTIFICATIONS 1"); var blackDestDict = path + "/Unity-iPhone/Images.xcassets/unityConnectBlack.imageset"; var blackSourceFile = "iOS/unityConnectBlack.imageset"; writeFile(blackSourceFile, blackDestDict); var madeDestDict = path + "/Unity-iPhone/Images.xcassets/madeWithUnity.imageset"; var madeSourceFile = "iOS/madeWithUnity.imageset"; writeFile(madeSourceFile, madeDestDict); var destFile = path + "/Classes/UI/UnityVIewControllerBase+iOS.mm"; FileUtil.DeleteFileOrDirectory(destFile); // 自定义覆盖controller文件,动态修改状态栏 FileUtil.CopyFileOrDirectory(Application.dataPath + "/Plugins/Editor/UnityVIewControllerBase+iOS.mm", destFile); var destBaseFile = path + "/Classes/UI/UnityVIewControllerBase.mm"; FileUtil.DeleteFileOrDirectory(destBaseFile); // 自定义覆盖controller文件,动态修改状态栏 FileUtil.CopyFileOrDirectory(Application.dataPath + "/Plugins/Editor/UnityVIewControllerBase.mm", destBaseFile); // 执行修改操作 File.WriteAllText(path: projPath, proj.WriteToString()); }
static void ModifyPbxProject(string path) { string projPath = PBXProject.GetPBXProjectPath(buildPath: path); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(path: projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); proj.SetBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries/Plugins/iOS"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries/Plugins/iOS/WeChatSDK1.8.4"); // Add Framework proj.AddFrameworkToProject(targetGuid: target, "libz.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "libc++.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "libsqlite3.0.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "CoreFoundation.framework", false); proj.AddFrameworkToProject(targetGuid: target, "libresolv.tbd", false); proj.AddFrameworkToProject(targetGuid: target, "UserNotifications.framework", false); proj.AddFrameworkToProject(targetGuid: target, "CoreTelephony.framework", true); proj.AddBuildProperty(targetGuid: target, "OTHER_LDFLAGS", "-ObjC"); proj.AddBuildProperty(targetGuid: target, "OTHER_LDFLAGS", "-all_load"); // 读取 Preprocessor.h 文件 var preprocessor = new XClass(path + "/Classes/Preprocessor.h"); preprocessor.Replace("#define UNITY_USES_REMOTE_NOTIFICATIONS 0", "#define UNITY_USES_REMOTE_NOTIFICATIONS 1"); // 执行修改操作 File.WriteAllText(path: projPath, proj.WriteToString()); }
static void ModifyPbxProject(string path) { string projPath = PBXProject.GetPBXProjectPath(buildPath: path); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(path: projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); proj.SetBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries/Plugins/iOS"); proj.AddBuildProperty(targetGuid: target, "LIBRARY_SEARCH_PATHS", "$(PROJECT_DIR)/Libraries/Plugins/iOS/WeChatSDK1.8.4"); // Add Framework proj.AddFrameworkToProject(targetGuid: target, "libz.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "libc++.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "libsqlite3.0.tbd", true); proj.AddFrameworkToProject(targetGuid: target, "CoreFoundation.framework", false); proj.AddFrameworkToProject(targetGuid: target, "libresolv.tbd", false); proj.AddFrameworkToProject(targetGuid: target, "UserNotifications.framework", false); proj.AddFrameworkToProject(targetGuid: target, "CoreTelephony.framework", true); proj.AddBuildProperty(targetGuid: target, "OTHER_LDFLAGS", "-ObjC"); proj.AddBuildProperty(targetGuid: target, "OTHER_LDFLAGS", "-all_load"); //associated-domains string fileName = "unityconnect.entitlements"; string filePath = Path.Combine(path, fileName); //Debug.Log ("filePath: " + filePath); string fileContent = @"<?xml version=""1.0"" encoding=""UTF-8""?> <!DOCTYPE plist PUBLIC ""-//Apple//DTD PLIST 1.0//EN"" ""http://www.apple.com/DTDs/PropertyList-1.0.dtd ""> <plist version=""1.0""> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>applinks:connect-download.unity.com</string> <string>applinks:connect.unity.com</string> </array> </dict> </plist>"; File.WriteAllText(filePath, fileContent); proj.AddFile(filePath, fileName); proj.SetBuildProperty(target, "CODE_SIGN_ENTITLEMENTS", fileName); // save changed File.WriteAllText(projPath, proj.WriteToString()); // 读取 Preprocessor.h 文件 var preprocessor = new XClass(path + "/Classes/Preprocessor.h"); preprocessor.Replace("#define UNITY_USES_REMOTE_NOTIFICATIONS 0", "#define UNITY_USES_REMOTE_NOTIFICATIONS 1"); var blackDestDict = path + "/Unity-iPhone/Images.xcassets/unityConnectBlack.imageset"; var blackSourceFile = "iOS/unityConnectBlack.imageset"; writeFile(blackSourceFile, blackDestDict); var madeDestDict = path + "/Unity-iPhone/Images.xcassets/madeWithUnity.imageset"; var madeSourceFile = "iOS/madeWithUnity.imageset"; writeFile(madeSourceFile, madeDestDict); var destFile = path + "/Classes/UI/UnityVIewControllerBase+iOS.mm"; FileUtil.DeleteFileOrDirectory(destFile); // 自定义覆盖controller文件,动态修改状态栏 FileUtil.CopyFileOrDirectory(Application.dataPath + "/Plugins/Editor/UnityVIewControllerBase+iOS.mm", destFile); var destBaseFile = path + "/Classes/UI/UnityVIewControllerBase.mm"; FileUtil.DeleteFileOrDirectory(destBaseFile); // 自定义覆盖controller文件,动态修改状态栏 FileUtil.CopyFileOrDirectory(Application.dataPath + "/Plugins/Editor/UnityVIewControllerBase.mm", destBaseFile); // 执行修改操作 File.WriteAllText(path: projPath, proj.WriteToString()); }
static void ModifyPbxProject(string path) { var projPath = PBXProject.GetPBXProjectPath(buildPath: path); var proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(path: projPath)); var targetName = PBXProject.GetUnityTargetName(); var targetGuid = proj.TargetGuidByName(name: targetName); proj.SetBuildProperty(targetGuid: targetGuid, name: "LIBRARY_SEARCH_PATHS", value: "$(inherited)"); proj.AddBuildProperty(targetGuid: targetGuid, name: "LIBRARY_SEARCH_PATHS", value: "$(SRCROOT)"); proj.AddBuildProperty(targetGuid: targetGuid, name: "LIBRARY_SEARCH_PATHS", value: "$(PROJECT_DIR)/Libraries"); proj.AddBuildProperty(targetGuid: targetGuid, name: "LIBRARY_SEARCH_PATHS", value: "$(PROJECT_DIR)/Libraries/Plugins/iOS"); proj.AddBuildProperty(targetGuid: targetGuid, name: "LIBRARY_SEARCH_PATHS", value: "$(PROJECT_DIR)/Libraries/Plugins/iOS/WeChatSDK1.8.4"); proj.AddBuildProperty(targetGuid: targetGuid, name: "LIBRARY_SEARCH_PATHS", value: "$(PROJECT_DIR)/Libraries/Plugins/iOS/Bugly"); // Add Framework proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "libz.tbd", weak: true); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "libc++.tbd", weak: true); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "libsqlite3.0.tbd", weak: true); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "CoreFoundation.framework", weak: false); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "libresolv.tbd", weak: false); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "UserNotifications.framework", weak: false); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "CoreTelephony.framework", weak: true); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "CoreServices.framework", weak: true); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "MediaPlayer.framework", weak: true); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "Photos.framework", weak: false); proj.AddFrameworkToProject(targetGuid: targetGuid, framework: "SafariServices.framework", weak: false); // Update Build Setting proj.SetBuildProperty(targetGuid: targetGuid, name: "ENABLE_BITCODE", value: "NO"); proj.AddBuildProperty(targetGuid: targetGuid, name: "OTHER_LDFLAGS", value: "-all_load"); proj.AddBuildProperty(targetGuid: targetGuid, name: "OTHER_LDFLAGS", value: "-ObjC"); // Add Entitlements const string fileName = "unityconnect.entitlements"; var filePath = Path.Combine(path1: path, path2: fileName); File.WriteAllText(path: filePath, contents: Entitlements); proj.AddFile(path: filePath, projectPath: fileName); proj.SetBuildProperty(targetGuid: targetGuid, name: "CODE_SIGN_ENTITLEMENTS", value: fileName); // save changed File.WriteAllText(path: projPath, contents: proj.WriteToString()); // 读取 Preprocessor.h 文件 var preprocessor = new XClass(path + "/Classes/Preprocessor.h"); preprocessor.Replace("#define UNITY_USES_REMOTE_NOTIFICATIONS 0", "#define UNITY_USES_REMOTE_NOTIFICATIONS 1"); var blackDestDict = path + "/Unity-iPhone/Images.xcassets/unityConnectBlack.imageset"; var blackSourceFile = "image/iOS/unityConnectBlack.imageset"; writeFile(blackSourceFile, blackDestDict); var madeDestDict = path + "/Unity-iPhone/Images.xcassets/madeWithUnity.imageset"; var madeSourceFile = "image/iOS/madeWithUnity.imageset"; writeFile(madeSourceFile, madeDestDict); var arrowBackDestDict = path + "/Unity-iPhone/Images.xcassets/arrowBack.imageset"; var arrowBackSourceFile = "image/iOS/arrowBack.imageset"; writeFile(arrowBackSourceFile, arrowBackDestDict); var qrScanLineDestDict = path + "/Unity-iPhone/Images.xcassets/qrScanLine.imageset"; var qrScanLineSourceFile = "image/iOS/qrScanLine.imageset"; writeFile(qrScanLineSourceFile, qrScanLineDestDict); var noticeWavDestDict = path + "/Data/noticeMusic.wav"; var noticeWavSourceFile = "files/noticeMusic.wav"; writeFile(noticeWavSourceFile, noticeWavDestDict); var destFile = path + "/Classes/UI/UnityVIewControllerBase+iOS.mm"; FileUtil.DeleteFileOrDirectory(destFile); // 自定义覆盖controller文件,动态修改状态栏 FileUtil.CopyFileOrDirectory(Application.dataPath + "/Plugins/Editor/UnityVIewControllerBase+iOS.mm", destFile); var destBaseFile = path + "/Classes/UI/UnityVIewControllerBase.mm"; FileUtil.DeleteFileOrDirectory(destBaseFile); // 自定义覆盖controller文件,动态修改状态栏 FileUtil.CopyFileOrDirectory(Application.dataPath + "/Plugins/Editor/UnityVIewControllerBase.mm", destBaseFile); // 执行修改操作 File.WriteAllText(projPath, proj.WriteToString()); }