Пример #1
0
        public void AddDynamicFrameworkToProject(string targetGuid, string frameworkPathInProject)
        {
            var fileGuid = FindFileGuidByProjectPath(frameworkPathInProject);

            if (fileGuid == null)
            {
                Debug.LogError("Framework not found: " + frameworkPathInProject);
                return;
            }
            // add file reference as embed framework
            var embedFrameworkFileData = FindEmbeddedFramework(fileGuid);

            if (embedFrameworkFileData == null)
            {
                embedFrameworkFileData = PBXBuildFileData.CreateFromFramework(fileGuid);
                BuildFilesAdd(targetGuid, embedFrameworkFileData);
            }

            // add "Embed Frameworks" section
            var embedFrameworksSection = FindEmbeddedFrameworkSection();

            if (embedFrameworksSection == null)
            {
                embedFrameworksSection = PBXCopyFilesBuildPhaseData.Create("Embed Frameworks", "10");
                copyFiles.AddEntry(embedFrameworksSection);
            }

            var frameworkAlreadyAdded = false;

            foreach (var fileEntry in embedFrameworksSection.files)
            {
                if (fileEntry == embedFrameworkFileData.guid)
                {
                    frameworkAlreadyAdded = true;
                }
            }
            if (!frameworkAlreadyAdded)
            {
                embedFrameworksSection.files.AddGUID(embedFrameworkFileData.guid);
            }

            // add "Embed Frameworks" section to "Build phases"
            var targetPhases = nativeTargets[targetGuid].phases;

            if (!targetPhases.Contains(embedFrameworksSection.guid))
            {
                targetPhases.AddGUID(embedFrameworksSection.guid);
            }
            foreach (var buildConfigEntry in buildConfigs.GetEntries())
            {
                XCBuildConfigurationData configurationData = buildConfigEntry.Value;
                configurationData.AddProperty("LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");
            }
        }
Пример #2
0
        // name may be null
        public static PBXCopyFilesBuildPhaseData Create(string name, string subfolderSpec)
        {
            var res = new PBXCopyFilesBuildPhaseData();

            res.guid = PBXGUID.Generate();
            res.SetPropertyString("isa", "PBXCopyFilesBuildPhase");
            res.SetPropertyString("buildActionMask", "2147483647");
            res.SetPropertyString("dstPath", "");
            res.SetPropertyString("dstSubfolderSpec", subfolderSpec);
            res.files = new List <string>();
            res.SetPropertyString("runOnlyForDeploymentPostprocessing", "0");
            res.name = name;
            return(res);
        }
Пример #3
0
        // Returns the guid of the new target
        internal string AddAppExtension(string mainTarget, string name, string infoPlistPath)
        {
            string ext       = ".appex";
            var    newTarget = CreateNewTarget(name, ext, "com.apple.product-type.app-extension");

            SetDefaultAppExtensionReleaseBuildFlags(buildConfigs[BuildConfigByName(newTarget.guid, "Release")], infoPlistPath);
            SetDefaultAppExtensionDebugBuildFlags(buildConfigs[BuildConfigByName(newTarget.guid, "Debug")], infoPlistPath);

            var sourcesBuildPhase = PBXSourcesBuildPhaseData.Create();

            sources.AddEntry(sourcesBuildPhase);
            newTarget.phases.AddGUID(sourcesBuildPhase.guid);

            var resourcesBuildPhase = PBXResourcesBuildPhaseData.Create();

            resources.AddEntry(resourcesBuildPhase);
            newTarget.phases.AddGUID(resourcesBuildPhase.guid);

            var frameworksBuildPhase = PBXFrameworksBuildPhaseData.Create();

            frameworks.AddEntry(frameworksBuildPhase);
            newTarget.phases.AddGUID(frameworksBuildPhase.guid);

            var copyFilesBuildPhase = PBXCopyFilesBuildPhaseData.Create("Embed App Extensions", "13");

            copyFiles.AddEntry(copyFilesBuildPhase);
            nativeTargets[mainTarget].phases.AddGUID(copyFilesBuildPhase.guid);

            var containerProxy = PBXContainerItemProxyData.Create(project.project.guid, "1", newTarget.guid, name);

            containerItems.AddEntry(containerProxy);

            var targetDependency = PBXTargetDependencyData.Create(newTarget.guid, containerProxy.guid);

            targetDependencies.AddEntry(targetDependency);

            nativeTargets[mainTarget].dependencies.AddGUID(targetDependency.guid);

            var buildAppCopy = PBXBuildFileData.CreateFromFile(FindFileGuidByProjectPath("Products/" + name + ext), false, "");

            BuildFilesAdd(mainTarget, buildAppCopy);
            copyFilesBuildPhase.files.AddGUID(buildAppCopy.guid);

            AddFile(infoPlistPath, name + "/Supporting Files/Info.plist", PBXSourceTree.Source);

            return(newTarget.guid);
        }
Пример #4
0
        public void AddDynamicFrameworkToProject(string targetGuid, string frameworkPathInProject)
        {
            var fileGuid = FindFileGuidByProjectPath(frameworkPathInProject);
            if (fileGuid == null)
            {
                Debug.LogError("Framework not found: " + frameworkPathInProject);
                return;
            }
            // add file reference as embed framework
            var embedFrameworkFileData = FindEmbeddedFramework(fileGuid);
            if (embedFrameworkFileData == null)
            {
                embedFrameworkFileData = PBXBuildFileData.CreateFromFramework(fileGuid);
                BuildFilesAdd(targetGuid, embedFrameworkFileData);
            }

            // add "Embed Frameworks" section
            var embedFrameworksSection = FindEmbeddedFrameworkSection(targetGuid);
            if (embedFrameworksSection == null)
            {
                embedFrameworksSection = PBXCopyFilesBuildPhaseData.Create("Embed Frameworks", "10");
                copyFiles.AddEntry(embedFrameworksSection);
            }

            var frameworkAlreadyAdded = false;
            foreach (var fileEntry in embedFrameworksSection.files)
            {
                if (fileEntry == embedFrameworkFileData.guid)
                {
                    frameworkAlreadyAdded = true;
                }
            }
            if (!frameworkAlreadyAdded)
            {
                embedFrameworksSection.files.AddGUID(embedFrameworkFileData.guid);
            }

            // add "Embed Frameworks" section to "Build phases"
            var targetPhases = nativeTargets[targetGuid].phases;
            if (!targetPhases.Contains(embedFrameworksSection.guid))
            {
                targetPhases.AddGUID(embedFrameworksSection.guid);
            }
            CheckRuntimeSearchPath();
        }