コード例 #1
0
        private static void ModifyXcodeCodes(string pathToBuildProject, XcodeProjectPresetSettings setting)
        {
            if (pathToBuildProject == null || setting == null || setting.ModifyCode == null)
            {
                return;
            }
            foreach (var native in setting.ModifyCode.CodeDatas)
            {
                if (native == null || string.IsNullOrEmpty(native.targetFile))
                {
                    continue;
                }

                QuickXClass xClass = new QuickXClass(pathToBuildProject, native.targetFile);
                if (xClass.CanLoad)
                {
                    xClass.Load();
                    System.Text.StringBuilder code = new System.Text.StringBuilder();
                    code.Length = 0;
                    foreach (var appendCode in native.AppendCodes)
                    {
                        if (string.IsNullOrEmpty(appendCode))
                        {
                            continue;
                        }
                        code.AppendLine(appendCode);
                    }
                    xClass.Append(native.AppendMark, code.ToString());
                    code.Length = 0;
                    foreach (var replaceCode in native.ReplaceCodes)
                    {
                        if (string.IsNullOrEmpty(replaceCode))
                        {
                            continue;
                        }
                        code.AppendLine(replaceCode);
                    }
                    xClass.Replace(native.ReplaceMark, code.ToString());
                    xClass.Write();
                }
            }
            //QXcodeClass xcodeClass = new QXcodeClass(Path.Combine(pathToBuildProject, "Classes/UnityAppController.mm"));
            //xcodeClass.Load();
            //string code = "\n#import \"GYSDK.h\"" + "\n#import \"SDK2144.h\"";
            //xcodeClass.Append("#import \"UnityAppController.h\"", code);
            //code = "-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{\n" +
            //    "\treturn [GYSDK handOpenUrl:url isDeepLink:NO];\n" +
            //    "}\n\n" +
            //    "-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{\n" +
            //    "\treturn [GYSDK handOpenUrl:url isDeepLink:YES];\n" +
            //    "}\n\n" +
            //    "- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler {\n" +
            //    "\t[GYSDK handOpenUrl:userActivity.webpageURL isDeepLink:YES];\n" +
            //    "\treturn YES;\n" +
            //    "}\n\n";
            //xcodeClass.Append("- (void)applicationDidEnterBackground", code);
            //xcodeClass.Write();
        }
コード例 #2
0
        private static void SetInfoPlist(string pathToBuildProject, XcodeProjectPresetSettings setting)
        {
            if (pathToBuildProject == null || setting == null || setting.InfoPlist == null)
            {
                return;
            }
            XcodeProjectPresetSettings.XcodeInfoPlistSettings infoPlistSetting = setting.InfoPlist;
            QuickInfoPlist plist = new QuickInfoPlist(pathToBuildProject);

            if (plist.CanLoad)
            {
                plist.Load();
                plist.SetPrivacySensiticeData(infoPlistSetting.PrivacySensiticeData, "privacySensiticeData");
                plist.SetApplicationQueriesSchemes(infoPlistSetting.ApplicationQueriesSchemes);
                plist.SetBackgroundModes(infoPlistSetting.BackgroundModes);
                plist.SetDomains(infoPlistSetting.Domains);
                foreach (var set in infoPlistSetting.Permissions)
                {
                    if (set == null)
                    {
                        continue;
                    }
                    plist.SetPermission(set.permissionName, set.describe);
                }
                foreach (var urlData in infoPlistSetting.BundleURLTypes)
                {
                    if (urlData == null)
                    {
                        continue;
                    }
                    plist.SetURLSchemes(urlData.BundleTypeRole, urlData.BundleURLName, urlData.BundleURLSchmes);
                }

                plist.Write();
            }
        }
コード例 #3
0
        private static void ModifyPBXProject(string pathToBuildProject, XcodeProjectPresetSettings setting, string exportMethod = null)
        {
            if (pathToBuildProject == null || setting == null || setting.PBXProject == null)
            {
                return;
            }
            XcodeProjectPresetSettings.XcodePBXProjectSettings pBXProjectSetting = setting.PBXProject;
            if (pBXProjectSetting == null)
            {
                return;
            }
            QuickPBXProject project = new QuickPBXProject(pathToBuildProject);

            if (project.CanLoad)
            {
                project.Load();
                project.SetLinkerFlag(pBXProjectSetting.LinkerFlagArray);
                project.SetFrameworkSearchPaths(pBXProjectSetting.FrameworkSearchPaths);
                project.SetLibrarySearchPaths(pBXProjectSetting.LibrarySearchPaths);
                project.SetHeaderSearchPaths(pBXProjectSetting.HeaderSearchPaths);

                foreach (var file in pBXProjectSetting.CompileFiles)
                {
                    if (file == null)
                    {
                        continue;
                    }
                    project.SetCompileFlagsForFile(file.File, file.HeadersDirectory, file.CompileFlags);
                }

                foreach (var file in pBXProjectSetting.CompileFiles)
                {
                    if (file == null)
                    {
                        continue;
                    }
                    project.SetCompileFlagsForFile(file.File, file.HeadersDirectory, file.CompileFlags);
                }

                foreach (var frame in pBXProjectSetting.Frameworks)
                {
                    if (frame == null)
                    {
                        continue;
                    }
                    project.AddFramework(frame.Path, frame.IsWeak);
                }

                foreach (var lib in pBXProjectSetting.Librarys)
                {
                    if (lib == null)
                    {
                        continue;
                    }
                    project.AddLibrary(lib.File);
                }

                if (exportMethod != null)
                {
                    if (exportMethod.Equals("AppStore") || exportMethod.Equals("AdHoc"))
                    {
                        foreach (var capability in pBXProjectSetting.Capabilities)
                        {
                            if (capability == null || !capability.Enable)
                            {
                                continue;
                            }
                            project.AddCapability(capability.PBXCapability, capability.EntitlementsFilePath, capability.AddOptionalFramework);
                        }
                    }
                }

                project.Write();
            }
            project = new QuickPBXProject(pathToBuildProject);
            if (project.CanLoad)
            {
                if (pBXProjectSetting.Folders != null)
                {
                    foreach (var folder in pBXProjectSetting.Folders)
                    {
                        if (string.IsNullOrEmpty(folder))
                        {
                            continue;
                        }
                        QuickXcodeDirectory.CopyAndAddBuildToXcode(project.Proj, project.TargetGuid, folder, pathToBuildProject, string.Empty);
                    }
                }
                project.Write();
            }
        }