Xcode 10发行说明
更新您的应用以使用新功能,并针对API更改测试您的应用。
Xcode 10可在Mac App Store中使用,包括适用于iOS 12,watchOS 5,macOS 10.14和tvOS 12的SDK.Xcode 10支持iOS 8及更高版本,tvOS 9及更高版本以及watchOS 2及更高版本的设备上调试。Xcode 10需要Mac运行macOS 10.13.6或更高版本。
一般
新功能
-
为快速查看弹出窗口添加了导出选项,用于数据类型,例如
NSData
。(41370369) -
现在,新创建的方案默认由Xcode项目的所有用户共享。要创建个人方案,请取消选中“管理方案”表中的“共享”复选框。(40223696)
-
从键盘上选择Schemes and Run Destinations。按“Ctrl + 0”打开Scheme弹出窗口,按“Ctrl + Shift + 0”打开Run Destination弹出窗口。弹出窗口后,键入足够的字符以突出显示相应的条目,使用箭头键突出显示它,然后按Return键选择它。(8999215)
-
打开库时按住Option键将使其在手动关闭之前保持可见,而不是在每次使用后自动关闭。(40880961)
-
库内容已从“检查器”区域的底部移动到叠加窗口,该窗口可以像Spotlight搜索一样移动和调整大小。它会在拖动项目时解除,但在拖动之前按住Option键会使库保持打开状态以进行额外的拖动。
可以通过新的工具栏按钮,“视图”>“库”菜单或⇧⌘L键盘快捷键打开库。内容动态匹配活动编辑器,因此相同的UI提供对代码片段,Interface Builder,SpriteKit或SceneKit项的访问。通过长按工具栏按钮,“视图”>“库”菜单或⇧⌘M键盘快捷键,可以使用媒体库。(37318979,39885726)
-
“项目编辑器”中的“功能”选项卡为macOS应用程序和应用程序扩展提供了新的“强化运行时”功能。启用此功能后,您的应用会选择使用macOS 10.14提供的新安全保护,并且您的应用需要经过公证。(39674498)
已知的问题
-
打开存储在iCloud Drive中的Xcode项目和工作空间,或更改存储在iCloud Drive中的打开的工作空间或项目的源控制分支,可能会导致Xcode挂起。(34086758)
已解决的问题
-
Objective-C header(
.h
)文件的New File模板包含和宏。(22753521)NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END
-
修复了从“查找导航器”中进行选择时不会突出显示查找结果的文本范围的问题。(37820835)
-
项目设置验证了解通过引用其他构建设置而设置的构建设置值。(30549576)
-
“管理方案”表中未选中“显示”的方案不再显示在“产品”>“方案”子菜单中。(24579413)
-
双击导航现在默认为与单击相同。可以在“首选项”的“导航”面板中更改此设置。(37294346)
-
修复了在代码段编辑器中按Tab键时发生崩溃的问题。(41296805)
Apple Clang编译器
新功能
-
xcode的10增加了对C ++ 17个头部的支持
<any>
,<optional>
和<variant>
。(39271859)
已解决的问题
-
Clang现在可以正确处理可能影响代码完成支持的无效Objective-C属性。(33761186)
资产目录
新功能
-
命名颜色现在可以象征性地引用系统颜色。(39196638)
-
支持ARKit 3D 资产。(38086640)
ARReferenceObject
-
支持CarPlay资产。(35543584)
-
支持在macOS 10.14及更高版本上通过Light,Dark和High Contrast外观改变图像和颜色资源。(38735965)
-
资产目录和视图调试器的背景可以明确地设置为亮或暗,以便前景元素以足够的对比度显示。(39073926)
已解决的问题
-
默认情况下,watchOS PDF资产的资产目录中不再启用自动缩放,无论选择如何。(35788204)
-
修复了打开属于外部项目引用的资产目录时可能发生的挂起问题。(14235592)
构建系统
命令行工具
新功能
-
命令行工具包在macOS SDK中安装macOS系统头文件。使用已安装工具编译的软件将在Xcode中提供的macOS SDK中搜索标题:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
或命令行工具:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
取决于使用哪个选择
xcode-select
。默认情况下,命令行工具将在SDK中搜索系统标头。但是,某些软件可能无法针对SDK正确构建,并且需要在基础系统中安装macOS标头
/usr/include
。如果您是此类软件的维护者,我们建议您更新项目以使用SDK,或者提交错误报告以解决阻止您这样做的问题。作为一种解决方法,提供了一个额外的包,它将把标头安装到基本系统。在将来的版本中,将不再提供此包。您可以在以下位置找到此套餐:/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
要确保您使用的是命令行工具的预期版本,请运行
xcode-select -s
<Xcode的路径>或安装后。xcode select -s /Library/Developer/CommandLineTools
创建ML
新功能
-
MLDataTable
,并支持数学运算,基于范围的切片,多列子选择,类型转换和其他数据预处理方法。(38199042)MLDataColumn
MLUntypedColumn
-
增强功能支持裁剪图像的功能。(42077294)
已知的问题
-
在命令行工具中不支持创建ML。(40637430)
已解决的问题
-
关闭字段时,更改模型名称可以正确保存。(40437531)
调试
新功能
-
您可以使用Debug> View Debugging> Appearance菜单,调试栏中的Override Appearance菜单或触摸条在运行时更改macOS应用程序的外观。(39448599)
-
Xcode的视图调试器添加了一个选项,可以选择浅色和深色画布背景颜色。(39159102)
-
NSVisualEffectView
现在,属性显示在视图调试器检查器中。(18124270) -
Disk Gauge Report中的files表包含已关闭的文件,以便开发人员了解其大小。(39359014)
-
视图调试器向视图检查器添加
appearance
和属性。(38198002)effectiveAppearance
-
调试附件表允许开发人员打开Malloc Stack Logging(Live Allocations)。(35447219)
-
磁盘计量报告包括一个新表,显示该进程的总读写大小。(39359147)
-
检查器中显示的命名颜色,而视图调试现在指示其名称以及它们是否为系统颜色。(38193961)
-
金属框架调试器。(33194071)
Metal Frame Debugger允许您调试Metal着色器。捕获Metal工作负载,选择绘制/分派调用并单击调试栏上的新调试按钮以开始调试着色器。
在Debug Navigator中选择命令编码器项将显示一个图表,显示编码器如何通过资源使用相互依赖。放大以获取有关附件和编码器的更多信息。
每个绘制调用都有新的“几何”项,您可以在其中查看后变换顶点数据的三维可视化以及顶点输入和输出。
已解决的问题
-
Memory Gauge Report现在可以在所有平台上一致地报告物理足迹。(20472364)
-
当存在大量静态Swift模块时,第一个Swift表达式评估的性能已得到优化。(40905971)
-
在尝试在该模拟器上运行应用程序之前,Xcode等待模拟器可用。(39116182)
-
Debug> View Debugging菜单中的选项(如Show View Frames)现在按预期继续目标应用程序。(26649378)
弃用通知
弃用
-
使用libstdc ++构建时不推荐使用Xcode 8,并且在针对iOS时Xcode 10不支持。C ++项目现在必须迁移到libc ++,并建议设置macOS 10.9或更高版本或iOS 7或更高版本的部署目标。除了更改C ++标准库构建设置外,开发人员还应审核硬编码链接器标志和目标依赖项,以删除对libstdc ++的引用(包括-lstdc ++, - lddc ++。6.0.9,libstdc ++。6.0.9.tbd和libstdc ++。6.0。 9.dylib)。还需要针对libc ++重建项目依赖项,例如针对libstdc ++构建的静态归档。(40885260)
-
Libgcc已经过时了。Xcode 10无法再构建具有macOS 10.4和10.5部署目标的应用程序。(42818150,38035243)
-
已删除对Subversion的支持。(33361671)
-
在仪器中不再支持仅适用于macOS和Simulator的基于dtrace的自定义检测。基于os_signpost的新定制仪器包允许更大的灵活性和对数据表示的控制,并支持所有平台。(38812912)
-
Xcode 10是最后一个支持Swift 3的版本。通过打开项目并选择Edit> Convert> To Current Swift Syntax ...将项目从Swift 3代码迁移到Swift 4.2语法...(43101816)
-
macOS 10.14 SDK不再包含对编译32位应用程序的支持。如果开发人员需要为i386编译,则需要Xcode 9.4或更早版本。(39858111)
设备
已知的问题
-
运行iOS 12的设备可能无法从Xcode的设备窗口获取请求的屏幕截图。(42873539)
解决方法:在设备上截取屏幕截图。
-
使用以前版本的Xcode构建的Xcode 10运行WatchKit应用程序可能会出现安装错误“WatchKit应用程序具有无效的存根可执行文件”。(40567857)
解决方法:清理构建文件夹并再次运行应用程序。
文档查看器
新功能
-
快速帮助使用单列布局,更好地利用它所呈现的可用空间。(39518057)
-
文档查看器和快速帮助中的代码清单与用户当前选择的主题颜色相匹配。(39435799)
仪器
新功能
-
在仪器10 - 线程状态中使用系统跟踪检测时,有一种新的线程模式可供线程使用 - 它只显示线程状态通道。之前的OS Fundamentals图形样式(系统调用,VM故障和线程状态通道)仍然可用。(37727022)
-
已删除对仪器8之前的系统跟踪仪器的支持。包含来自这些仪器的数据的某些跟踪文件将不再在仪器中打开。可以从developer.apple.com下载Xcode 10之前的Xcode版本,以便查看这些旧文件。(38506479)
-
您现在可以构建和分发自己的自定义仪器。(37987666)
已知的问题
-
如果Xcode尚未完成准备开发的任何连接设备,则仪器可能无法启动。(43066159)
解决方法:等待Xcode的设备设置阶段完成,然后打开Instruments。
-
仪器可能无法在iOS模拟器中配置库或框架单元测试。(39334812)
-
当停止包含路标(例如,或乐器)的录制时,录制按钮可能不会长时间重新激活。(43361649)
pointsOfInterest
os_signpost(_:dso:log:name:signpostID:)
os_log(_:dso:log:_:_:)
解决方法:在Mac上启动控制台,选择目标设备,然后让控制台继续运行。控制台和目标之间的这种连接足以使仪器在录制结束时不挂起。
已解决的问题
-
在iOS 11.3之前的iOS版本上进行性能分析时,大多数模板都失败了。(39759266)
Interface Builder
请参阅Xcode 10的Interface Builder发行说明。
本土化
新功能
-
Xcode 10支持新的Xcode Localization Catalog(
.xcloc
)导出和导入格式,用于本地化数据,可以包含XLIFF文件和其他可本地化的内容,如图像文件。(28662326) -
Xcode提供了为尚未使用它但支持多个本地化的项目启用Base Internationalization。(13178091)
已解决的问题
-
在Export For Localization命令生成的XLIFF中,项目目录外部文件的内容将通过相对于项目目录的路径而不是绝对路径引用。(38680116)
-
现在的Xcode提取下面的相应值的键的本地化:,,,。(40853982)
Info.plist
UTExportedTypeDeclarations
UTImportedTypeDeclarations
UIApplicationShortcutItems
INAlternativeAppNames
金属
新功能
-
直接调用金属编译器时,必须
-c
在构建.metal
文件时使用该标志。不添加该选项将导致生成的.air
文件被使用时出错metallib
。使用Xcode的构建系统调用Metal编译器将自动添加标志。(40655432)
游乐场
新功能
-
现在,Xcode中的游乐场会逐步执行代码,当您键入Shift-Return或按下新代码行旁边的“运行”按钮时,会编译新的代码行。这对于您不想重复运行的长任务特别有用,例如训练机器学习模型或设置实时视图的状态,并允许您逐步迭代您的想法而无需重新启动操场。(34313149)
已知的问题
-
在游乐场中切换到非默认工具链可能会导致Xcode崩溃。(43659135)
解决方法:切换回默认工具链,然后打开操场。
已解决的问题
-
修复了操场无法运行的问题,显示“无法查找符号”错误消息。(38505726)
-
修复了在带有内联结果的游乐场中发生的崩溃。(38281379)
-
修复了创建新游乐场页面时有时会发生的崩溃,尤其是在游乐场被锁定时。(38281509)
-
修复了阻止iOS游戏操场模板正常工作的问题。(38828600)
-
现在,在游乐场的辅助源文件中支持代码完成。(34363732)
重构
已解决的问题
-
修复了如果“Reduce motion”辅助功能选项打开,则Refactor> Rename的编辑字段无法获得键盘焦点的问题。(40719848)
服务器
已解决的问题
-
某些Xcode Server日志(例如触发器日志)现在可在集成日志报告中看到。(40462372)
签名和分发
新功能
-
支持通过命令行将应用程序上传到Apple。如果提供的命令包含名为“destination”且值为“upload”的键,则该命令将执行上载。此外,必须在Xcode的“帐户”首选项窗格中添加具有必要的App Store Connect角色和提供者成员身份的Apple ID帐户。支持使用“app-store”,“developer-id”和“验证”分发方法。(28555930)
xcodebuild -exportArchive
ExportOptions.plist
xcodebuild
-
Xcode的管理器中的开发者ID分发选项现在支持将应用程序上传到Apple进行公证。构建存档后,可以在管理器中选择此选项,方法是单击“分发应用程序”按钮,然后选择“开发者ID”方法和“上载”目标。要上传要公证的应用程序,您必须在Xcode的“帐户”偏好设置面板中输入Apple ID,其中包含必要的App Store Connect角色和提供者成员资格。此外,上传到公证的应用程序必须使用开发者ID证书进行签名。如有必要,分发工作流可以创建此证书,但需要具有代理角色的Apple ID帐户才能执行此操作。
上传要公证的应用程序后,您可以通过选择存档并单击“显示状态日志”按钮,在“管理器”窗口中查看应用程序的状态。当您收到应用程序已经过公证的通知时,您可以通过选择存档并单击“导出应用程序”按钮从“管理器”窗口中将其导出。导出的应用程序包含装订的票证,可以分发。(36409604)
模拟器
新功能
-
模拟器的“编辑”菜单中的“复制”和“粘贴”项目不再用于与模拟器设备的粘贴板同步。“编辑”菜单现在具有用于处理这些操作的显式菜单项。(38225290)
-
当使用iOS模拟器目标从xcodebuild或Xcode Server运行测试时,测试失败将导致嵌入测试操作结果包中的日志存档的收集。(42172805)
已知的问题
-
如果使用键盘命令进行快进和快退,视频输出可能会停止在外部显示器上播放。(41917187)
解决方法:从屏幕的右上角拉下控制面板,然后再次隐藏它。
-
模拟设备中的macOS粘贴板和粘贴板之间的同步有时会失败。(36036706,38052949,41916640)
-
操作系统可能需要几分钟才能在模拟器中首次启动。(40535421)
-
在macOS 10.14上,模拟器可能会在启动时或在模拟器中首次与麦克风交互时提示访问麦克风(例如,使用Siri)。如果拒绝权限,模拟器音频会话将无法使用任何类型的音频输入,无论模拟器中授予的权限如何。使用macOS系统偏好设置,安全性和隐私首选项窗格更改此设置。
您的应用程序仍必须在模拟器中被授予麦克风权限。macOS将其权限策略作为一个整体应用于模拟器运行时版本和模拟器内的所有应用程序。每个模拟器将权限策略应用于各个应用程序,就像设备一样 (40113388)
源控制
新功能
-
改进的源代码管理身份验证工作流程可提供更多信息并提供更强大的控制权来执 (33726987)
-
与Bitbucket Cloud和Bitbucket Server源代码控制集成。(31156776)
-
可以选择从推板上推送标签。(40141815)
-
与GitLab.com和GitLab自托管源代码控制集成。(37501192)
-
通过启用源控件的项目,源编辑器显示开发人员在装订线中所做的更改,并显示尚未被拉入项目的其他开发人员所做的更改。(9794871)
-
使用GitHub,Bitbucket和GitLab的新创建,验证和上传工作流程,可以轻松管理SSH密钥。(31798220)
-
拉动源控件更改时的Rebase支持。(8937399)
已知的问题
-
Xcode不支持ed25519加密的SSH密钥对。(40912136)
解决方法:使用使用不同加密形式的SSH密钥对。
已解决的问题
-
源代码控制作者编辑器的子模式性能得到了改进,可以更快地加载和滚动。(40179372)
来源编辑
静态分析仪
新功能
-
使用Grand Central Dispatch时,静态分析器会检查常见的性能反模式,其中包括使用信号量等待回调:
<span style="color:#333333"><code>+ (<span style="color:#703daa">NSString</span> *)requestCurrentTaskName {
__block <span style="color:#703daa">NSString</span> *taskName = <span style="color:#ad3da4">nil</span>;
dispatch_semaphore_t sema = dispatch_semaphore_create(<span style="color:#272ad8">0</span>);
<span style="color:#703daa">NSXPCConnection</span> *connection =
[[<span style="color:#703daa">NSXPCConnection</span> alloc]
initWithServiceName:<span style="color:#d12f1b">@"MyConnection"</span>];
<span style="color:#ad3da4">id</span> remoteObjectProxy = connection.remoteObjectProxy;
[remoteObjectProxy requestCurrentTaskName:^(<span style="color:#703daa">NSString</span> *task) {
taskName = task;
dispatch_semaphore_signal(sema);
}];
dispatch_semaphore_wait(sema,
dispatch_time(DISPATCH_TIME_NOW, <span style="color:#272ad8">100</span>)
);
<span style="color:#ad3da4">return</span> taskName;
}
</code></span>
此类模式可能会降低性能并导致应用程序挂起。默认情况下,该检查当前处于禁用状态,但可以使用构建设置“使用Grand Central Dispatch进行性能反模式”来启用。(37312818)
-
静态分析器效率更高,并且会报告大多数程序的其他问题。(36672459)
迅速
有关Xcode 10的信息,请参阅Swift 4.2发行说明。
测试
新功能
-
现在可以将方案配置为仅在测试包中运行固定的测试子集,而不是自动包含添加到包中的新测试。这可以在方案编辑器的“测试”窗格中配置为每个测试包的选项。(35050431)
-
XCTest UI测试现在将已启动目标应用程序的标准输出和错误流捕获到结果包中的文件。(30929875)
-
Xcode 10支持并行运行测试,这减少了运行测试所需的时间。测试并行化支持macOS单元测试,以及iOS和tvOS模拟器上的单元和UI测试。要启用并行化,请导航到方案编辑器(“产品”>“方案”>“编辑方案”),选择“测试”操作,然后选择“信息”选项卡,然后在测试目标旁边,单击“选项”。最后,选择“并行执行”(对于macOS测试)或“在Simulator上并行执行”(对于iOS和tvOS测试)。
通过在多个运行程序进程中在目标中分发测试类来进行测试并行化。使用测试日志查看测试类的并行化方式。您将在日志中看到已启动的每个运行程序进程的条目,并且在每个运行程序下方,您将看到它执行的类的列表。
在Simulator上并行测试时,每个运行程序进程在所选模拟器的单独克隆上执行。对于名为“iPhone X”的模拟器,这些克隆将在模拟器中显示为“iPhone X的克隆1”,“iPhone X的克隆2”等(35224733)
-
XCTest现在强制不要多次等待实例。这可以防止意外误用,对于反转期望尤其重要,因为它们会导致等待完整的超时持续时间,从而导致测试执行速度变慢。(41641176)
XCTestExpectation
期望可能被多次意外等待的一种方式是,如果它是使用创建的,则等待使用,然后被调用。XCTest现在会在发生这种情况时引发异常,列出应该调整的有问题的预期。
expectationWithDescription:
waitForExpectations:timeout:
waitForExpectationsWithTimeout:handler:
例如,以下代码遇到此问题:
<span style="color:#333333"><code><span style="color:#ad3da4">func</span> <span style="color:#703daa">testFoo</span><span style="color:#703daa">()</span> {
<span style="color:#ad3da4">let</span> expectation1 = <span style="color:#ad3da4">self</span>.expectation(description: <span style="color:#d12f1b">"expectation1"</span>)
doSomething { expectation1.fulfill() }
<span style="color:#703daa">XCTWaiter</span>().wait(<span style="color:#ad3da4">for</span>: [expectation1], timeout: <span style="color:#272ad8">1</span>)
<span style="color:#ad3da4">let</span> expectation2 = <span style="color:#ad3da4">self</span>.expectation(description: <span style="color:#d12f1b">"expectation2"</span>)
doSomething { expectation2.fulfill() }
<span style="color:#65798c">// API Violation exception because it waits on both expectations,</span>
<span style="color:#65798c">// but expectation1 has already been waited on.</span>
<span style="color:#ad3da4">self</span>.waitForExpectations(timeout: <span style="color:#272ad8">1</span>)
}
</code></span>
以下是两种可能的修复方法:
<span style="color:#333333"><code><span style="color:#ad3da4">func</span> <span style="color:#703daa">testFoo_fix1</span><span style="color:#703daa">()</span> {
<span style="color:#ad3da4">let</span> expectation1 = <span style="color:#ad3da4">self</span>.expectation(description: <span style="color:#d12f1b">"expectation1"</span>)
doSomething { expectation1.fulfill() }
<span style="color:#703daa">XCTWaiter</span>().wait(<span style="color:#ad3da4">for</span>: [expectation1], timeout: <span style="color:#272ad8">1</span>)
<span style="color:#ad3da4">let</span> expectation2 = <span style="color:#ad3da4">self</span>.expectation(description: <span style="color:#d12f1b">"expectation2"</span>)
doSomething { expectation2.fulfill() }
<span style="color:#65798c">// Only wait on expectation2, which has not yet been waited on.</span>
<span style="color:#ad3da4">self</span>.wait(<span style="color:#ad3da4">for</span>: [expectation2], timeout: <span style="color:#272ad8">1</span>)
}
<span style="color:#ad3da4">func</span> <span style="color:#703daa">testFoo_fix2</span><span style="color:#703daa">()</span> {
<span style="color:#65798c">// Create an XCTestExpectation directly, not using XCTestCase convenience API.</span>
<span style="color:#ad3da4">let</span> expectation1 = <span style="color:#703daa">XCTestExpectation</span>(description: <span style="color:#d12f1b">"expectation1"</span>)
doSomething { expectation1.fulfill() }
<span style="color:#703daa">XCTWaiter</span>().wait(<span style="color:#ad3da4">for</span>: [expectation1], timeout: <span style="color:#272ad8">1</span>)
<span style="color:#ad3da4">let</span> expectation2 = <span style="color:#ad3da4">self</span>.expectation(description: <span style="color:#d12f1b">"expectation2"</span>)
doSomething { expectation2.fulfill() }
<span style="color:#ad3da4">self</span>.waitForExpectations(timeout: <span style="color:#272ad8">1</span>) <span style="color:#65798c">// Waits only for expectation2.</span>
}
</code></span>
-
现在可以将测试包配置为每次运行测试时以随机顺序执行其内容。这可以在方案编辑器的“测试”窗格中启用,作为每个测试包的选项。(11719679)
-
xcodebuild具有新的命令行选项来控制并行测试的行为。使用
-parallel-testing-enabled
覆盖每个目标设定为并行化是否已启用该方案。如果要控制启动的跑步者数量,请使用-parallel-testing-worker-count
或-maximum-parallel-testing-workers
。(39648990) -
“首选项”中的“常规”窗格现在包含用于控制Xcode在并行运行测试时应尝试的并行度的UI。“Mac测试并行化”滑块可用于调整并行运行macOS单元测试时生成的运行器数量。“模拟器测试并行化”滑块可用于调整在并行运行iOS或tvOS app / UI测试时生成的模拟器克隆的数量。将这些滑块中的任何一个设置为“自动”(默认值)指示Xcode选择默认编号。请注意,在测试时
xcodebuild
,-parallel-testing-worker-count
和-maximum-parallel-testing-workers
命令行选项优先于这些值。(41779908) -
XCTest已添加新API
XCUIElement
以捕获UI的整个状态,用于导出到外部系统或用于本地检查。它包含一个表示UI和API快照的类型,用于将该快照导出到标准值类型(字符串和数字)的字典中。(35168151)
已解决的问题
-
现在,测试日志中会显示可能导致丢失或没有覆盖数据的错误。如果您发现任何此类错误,请使用Apple Bug Reporter提交错误,并附上项目文件夹的压缩存档。(39930570)
DerivedData
-
当与内部和内部的内容交互时,Xcode不再在UI测试记录期间崩溃。(33593609)
WKWebView
SFSafariViewController
-
修复了导致基线测量更改丢失的问题,以及
%inf
将在未使用点作为小数分隔符的区域设置的系统上编辑这些测量值时报告的未来测量值。(31813795) -
在Xcode Server bot的目标配置选项中,“并行运行测试”选项已重命名为“同时在所选目标上测试”。此选项使选定的目标同时运行方案的测试。它不会导致单个目标并行运行测试。要允许每个目标并行运行测试,请取消选中此复选框,并在方案中启用并行测试或添加
-parallel-testing-enabled YES
为xcodebuild
参数。(39985444) -
xcodebuild
当在测试导航器或源编辑器(Xcode)中单击测试gem时,或者在使用-only-testing
:(xcodebuild
)时,Xcode 现在构建活动方案中的所有目标。以前,只会构建相关的测试包目标及其依赖关系。Xcodexcodebuild
现在还将禁止您运行其测试包不属于活动(Xcode)或指定(xcodebuild)方案的测试或测试类。(38935442)