private static void EditorPlist(string filePath) { XCPlist list = new XCPlist(filePath); string bundle = "com.yusong.momo"; string PlistAdd = @" <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLIconFile</key> <string>Icon@2x</string> <key>CFBundleURLName</key> <string>" + bundle + @"</string> <key>CFBundleURLSchemes</key> <array> <string>ww123456</string> </array> </dict> </array>"; //在plist里面增加一行 list.AddKey(PlistAdd); //在plist里面替换一行 list.ReplaceKey("<string>com.yusong.${PRODUCT_NAME}</string>", "<string>" + bundle + "</string>"); list.Save(); }
static void WritePlistFile(string path) { if (JoyYouSDKPlugin.PlatformSDK == ProjectPlatform.PP) { XCPlist list =new XCPlist(path); string ppKeyStr = @" <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string></string> <key>CFBundleURLSchemes</key> <array> <string>teiron%appId%</string> </array> </dict> </array>"; string s_appId = ""; foreach (var attr in typeof(JoyYouSDK).GetCustomAttributes(false)) { InitPPSDKParamAttribute ppSDKParams = attr as InitPPSDKParamAttribute; if (ppSDKParams != null) { s_appId = ppSDKParams.appId.ToString(); break; } } ppKeyStr = ppKeyStr.Replace ("%appId%", s_appId); list.AddKey (ppKeyStr); list.Save (); } }
public void ApplyMod(XCMod mod) { PBXGroup modGroup = this.GetGroup(mod.group); Debug.Log("Adding libraries..."); foreach (XCModFile libRef in mod.libs) { string completeLibPath = System.IO.Path.Combine("usr/lib", libRef.filePath); Debug.Log("Adding library " + completeLibPath); this.AddFile(completeLibPath, modGroup, "SDKROOT", true, libRef.isWeak); } Debug.Log("Adding frameworks..."); PBXGroup frameworkGroup = this.GetGroup("Frameworks"); foreach (string framework in mod.frameworks) { string[] filename = framework.Split(':'); bool isWeak = (filename.Length > 1) ? true : false; string completePath = System.IO.Path.Combine("System/Library/Frameworks", filename[0]); this.AddFile(completePath, frameworkGroup, "SDKROOT", true, isWeak); } Debug.Log("Adding files..."); foreach (string filePath in mod.files) { string absoluteFilePath = System.IO.Path.Combine(mod.path, filePath); this.AddFile(absoluteFilePath, modGroup); } Debug.Log("Adding embed binaries..."); if (mod.embed_binaries != null) { //1. Add LD_RUNPATH_SEARCH_PATHS for embed framework this.overwriteBuildSetting("LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks", "Release"); this.overwriteBuildSetting("LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks", "Debug"); foreach (string binary in mod.embed_binaries) { string absoluteFilePath = System.IO.Path.Combine(mod.path, binary); this.AddEmbedFramework(absoluteFilePath); } } Debug.Log("Adding folders..."); foreach (string folderPath in mod.folders) { string absoluteFolderPath = System.IO.Path.Combine(mod.path, folderPath); Debug.Log("Adding folder " + absoluteFolderPath); this.AddFolder(absoluteFolderPath, modGroup, (string[])mod.excludes.ToArray(typeof(string))); } Debug.Log("Adding headerpaths..."); foreach (string headerpath in mod.headerpaths) { if (headerpath.Contains("$(inherited)") || headerpath.Contains("$(SRCROOT)")) { Debug.Log("not prepending a path to " + headerpath); this.AddHeaderSearchPaths(headerpath); } else { string absoluteHeaderPath = System.IO.Path.Combine(mod.path, headerpath); this.AddHeaderSearchPaths(absoluteHeaderPath); } } Debug.Log("Adding librarypaths..."); foreach (string headerpath in mod.librarypaths) { if (headerpath.Contains("$(inherited)") || headerpath.Contains("$(SRCROOT)")) { Debug.Log("not prepending a path to " + headerpath); this.AddLibrarySearchPaths(headerpath); } else { string absoluteHeaderPath = System.IO.Path.Combine(mod.path, headerpath); this.AddLibrarySearchPaths(absoluteHeaderPath); } } Debug.Log("Adding compiler flags..."); foreach (string flag in mod.compiler_flags) { this.AddOtherCFlags(flag); } Debug.Log("Adding linker flags..."); foreach (string flag in mod.linker_flags) { this.AddOtherLinkerFlags(flag); } Debug.Log("Adding plist items..."); string plistPath = this.projectRootPath + "/Info.plist"; XCPlist plist = new XCPlist(plistPath); plist.Process(mod.plist); plist.Save(); this.Consolidate(); }