资产目录在Xcode 10.3中返回nil图像,在10.1中工作正常

时间:2019-08-22 07:58:41

标签: ios xcode image assets

使用两个不同的Xcode版本构建的应用程序的行为有所不同。使用Xcode 10.1构建时,所有图像都将按预期通过UIImage(named:in:compatibleWith:)方法加载。但是,一旦我使用Xcode 10.3构建应用程序,此方法就会为所有 unsliced 图像返回nil。奇怪的是,它为切片图像返回非nil

还值得注意的是,当我从Xcode(10.1 / 10.2.1 / 10.3)运行应用程序时,图像正常工作,但是当使用命令行从测试时,它们始终是nil xcodebuild test-without-building

1 个答案:

答案 0 :(得分:1)

问题出在xcodebuild -destination标志内容中。由于这是在CI上发生的,因此对于两个单独的构建(Xcode 10.1和10.2.1)传递不同的值并不明显。

当使用Xcode 10.1构建时,使用了iOS Simulator 10.3.1。因此,actool --filter-for-os-device-version 10.3.1参数是由xcode构建系统推断的。生成的car文件与iOS 10+运行时兼容。

当使用Xcode 10.2.1构建时,使用了iOS Simulator 12.2。在这种情况下,actool --filter-for-os-device-version 12.2自变量是由构建系统推断的。生成的car文件与iOS 12+运行时兼容。

在两种情况下,xcodebuild test-without-building均与iOS Simulator 11.3环境一起使用。因此,使用Xcode 10.2.1构建的应用仅适用于iOS 12.2环境,从而使所有图像在iOS 11.3环境中消失。

解决方法是在命令调用中同步xcodebuild -destinationbuild-for-testingtest-without-building标志的值。

另一个可以帮助您的建议是将ENABLE_ONLY_ACTIVE_RESOURCES的构建设置切换为NO