- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试为 iOS 项目的持续build设置构建服务器。由于我需要经常重新创建 Xcode 项目(它是统一构建的),iCloud 将被重置为 OFF。
我可以通过脚本复制授权文件(使用 iCloud key ),但我仍然需要单击实际的复选框来打开 iCloud。
我设法手动更改了 XC 项目,但它不是很安全,因为 XC 项目结构可能会发生变化。
您知道更好的方法吗?干杯!
最佳答案
显然 TO 解决了这个问题,但由于似乎有更多人对此感兴趣,这里有一个可能的解决方案。
您可以编写一个脚本来编辑您的 xcodeproj 文件中的 project.pbxproj(例如,可以使用 finder 中的“显示包内容”选项进行查看)。
在此文件中有一个项目设置部分,称为 PBXProject 部分。在那里,您可以为目标添加功能。您可能需要编写自定义解析逻辑,因为此文件是在 XCode config format 中编写的。 ,没有像 XML 或 JSON 这样流行的东西。
您要更新的部分如下所示:
/* Begin PBXProject section */
EB1DDE9C1A3334EC00D778DE /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 0610;
/* ...more settings */
TargetAttributes = {
EB1DDEA31A3334EC00D778DE = {/* this is one target */
CreatedOnToolsVersion = 6.1.1;
DevelopmentTeam = 37QAPDY2PR;
/* ...more settings */
};
EB9F6CE11A8812550038355B = {/* another possible target */
CreatedOnToolsVersion = 6.2;
DevelopmentTeam = 37QAPDY2PR;
/* ...more settings */
};
};
};
/* ...more settings */
};
/* End PBXProject section */
您想将 iCloud 功能添加到目标。这看起来像这样:
SystemCapabilities = {
com.apple.iCloud = {
enabled = 1;
};
};
假设您想将 iCloud 功能添加到目标 EB1DDEA31A3334EC00D778DE,那么 TargetAttributes 条目将如下所示:
TargetAttributes = {
EB1DDEA31A3334EC00D778DE = {/* this is one target */
CreatedOnToolsVersion = 6.1.1;
DevelopmentTeam = 37QAPDY2PR;
SystemCapabilities = {
com.apple.iCloud = {
enabled = 1;
};
};
};
EB9F6CE11A8812550038355B = {/* another possible target */
CreatedOnToolsVersion = 6.2;
DevelopmentTeam = 37QAPDY2PR;
/* ...more settings */
};
};
现在你需要确定一些事情才能做到这一点:
1.识别部分
我会让脚本查找字符串“Begin PBXProject section”,然后查找“TargetAttributes”,这两个字符串在文件中都是唯一的。从理论上讲,“TargetAttributes”应该足够了,但更好的是安全......并记住向脚本添加适当的日志记录并验证结果,因为这些字符串在未来的 XCode 版本中很容易更改(不过,我已经看到它们没有改变,有一段时间已经)。
<强>2。确定目标
此文件中有多个部分,您可以在其中看到与名称关联的目标的 id。我只是自己查找并在脚本中对其进行硬编码,因为除非您重新创建目标,否则此 ID 不会更改。如果您真的需要它,您还可以自动执行此操作...通过查找目标的名称及其与 id 关联的格式。应该还有其他配置文件出现此关联(在此文件中,名称仅显示为注释)。
3.处理目标已经有 SystemCapabilities 条目,并且已经有 iCloud 条目的情况。
如果您的目标具有其他功能,则此条目可能已经存在。此外,如果您已经启用了 iCloud,或者您曾经启用和禁用了 iCloud,则该条目也将存在(值为 0)。这必须在脚本中处理(如果项目文件是新的,那么最新的应该不是问题)。
除此之外,您可能还必须添加对权利文件的引用。您必须将其添加到相应目标的构建配置中。为此:
4.查找构建配置 ID
您的目标可能有多个构建配置,例如调试和发布。您必须找到要为其添加对权利文件的引用的构建配置的 ID。为此,有一个名为 XCConfigurationList 的部分(查找/* Begin XCConfigurationList section */)。在那里寻找我们在 1. 中得到的目标 id,然后找到您需要的配置的配置 id。
5.在 XCBuildConfiguration 部分中查找构建配置 ID
转到/* Begin XCBuildConfiguration 部分 */并查找在 5. 中找到的 id,然后将路径添加到它的 buildSettings。例如:
例如你有这样的东西
EB9F6CF33A861055BB38355B /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = B82B36921BDRI3622B0EC99 /* Pods-mytargetname.debug.xcconfig */;
buildSettings = {
/* build settings... */
CODE_SIGN_ENTITLEMENTS = mytargetname/myentitlements.entitlements; /* <-- add this */
};
name = Debug;
};
请注意,XCode 应该“知道”权利文件(就像您的项目文件的其余部分一样)。
关于ios - 通过脚本在 Xcode 项目上启用 iCloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011644/
我正在使用 NetBeans 开发 Java 中的 WebService,并使用 gradle 作为依赖管理。 我找到了this article关于使用 gradle 开发 Web 项目。它使用 Gr
我正在将旧项目从 ant 迁移到 gradle(以使用其依赖项管理和构建功能),并且在生成 时遇到问题>eclipse 项目。今天的大问题是因为该项目有一些子项目被拆分成 war 和 jar 包部署到
我已经为这个错误苦苦挣扎了很长时间。如果有帮助的话,我会提供一些问题的快照。请指导我该怎么办????在我看来,它看起来一团糟。 *** glibc detected *** /home/shivam/
我在 Ubuntu 12.10 上运行 NetBeans 7.3。我正在学习 Java Web 开发类(class),因此我有一个名为 jsage8 的项目,其中包含我为该类(class)所做的工作。
我想知道 Codeplex、GitHub 等中是否有任何突出的项目是 C# 和 ASP.NET,甚至只是 C# API 与功能测试 (NUnit) 和模拟(RhinoMocks、NMock 等)。 重
我创建了一个 Maven 项目,包装类型为“jar”,名为“Y”我已经完成了“Maven 安装”,并且可以在我的本地存储库中找到它.. 然后,我创建了另一个项目,包装类型为“war”,称为“X”。在这
我一直在关注the instructions用于将 facebook SDK 集成到我的应用程序中。除了“helloFacebookSample”之外,我已经成功地编译并运行了所有给定的示例应用程序。
我想知道,为什么我们(Java 社区)需要 Apache Harmony 项目,而已经有了 OpenJDK 项目。两者不是都是在开源许可下发布的吗? 最佳答案 事实恰恰相反。 Harmony 的成立是
我正在尝试使用 Jsoup HTML Parser 从网站获取缩略图 URL我需要提取所有以 60x60.jpg(或 png)结尾的 URL(所有缩略图 URL 都以此 URL 结尾) 问题是我让它在
我无法构建 gradle 项目,即使我编辑 gradle 属性,我也会收到以下错误: Error:(22, 1) A problem occurred evaluating root project
我有这个代码: var NToDel:NSArray = [] var addInNToDelArray = "Test1 \ Test2" 如何在 NToDel:NSArray 中添加 addInN
如何在单击显示更多(按钮)后将主题列表限制为 5 个(项目)。 还有 3(项目),依此类推到列表末尾,然后它会显示显示更少(按钮)。 例如:在 Udemy 过滤器选项中,当您点击查看更多按钮时,它仅显
如何将现有的 Flutter 项目导入为 gradle 项目? “导入项目”向导要求 Gradle 主路径。 我有 gradle,安装在我的系统中。但是这里需要设置什么(哪条路径)。 这是我正在尝试的
我有一个关于 Bitbucket 的项目。只有源被提交。为了将项目检索到新机器上,我在 IntelliJ 中使用了 Version Control > Checkout from Ve
所以,我想更改我公司的一个项目,以使用一些与 IDE 无关的设置。我在使用 Tomcat 设置 Java 应用程序方面有非常少的经验(我几乎不记得它是如何工作的)。 因此,为了帮助制作独立于 IDE
我有 2 个独立的项目,一个在 Cocos2dx v3.6 中,一个在 Swift 中。我想从 Swift 项目开始游戏。我该怎么做? 我已经将整个 cocos2dx 项目复制到我的 Swift 项目
Cordova 绝对是新手。这些是我完成的步骤: checkout 现有项目 运行cordova build ios 以上生成此构建错误: (node:10242) UnhandledPromiseR
我正在使用 JQuery 隐藏/显示 li。我的要求是,当我点击任何 li 时,它应该显示但隐藏所有其他 li 项目。当我将鼠标悬停在文本上时 'show all list item but don
我想将我所有的java 项目(223 个项目)迁移到gradle 项目。我正在使用由 SpringSource STS 团队开发的 Gradle Eclipse 插件。 目前,我所有的 java 项目
我下载this Eclipse Luna ,对于 Java EE 开发人员,如描述中所见,它支持 Web 应用程序。我找不到 file -> new -> other -> web projects
我是一名优秀的程序员,十分优秀!