首页 > 解决方案 > 资产目录在 Xcode 10.3 中返回 nil 图像,在 10.1 中工作正常

问题描述

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

另外值得注意的是,当我从 Xcode (10.1/10.2.1/10.3) 运行应用程序时,图像工作正常,nil在使用.xcodebuild test-without-building

标签: iosxcodeimageassets

解决方案


问题出在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 构建系统推断。生成的汽车文件与 iOS 10+ 运行时兼容。

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

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

解决方法是在命令调用中同步xcodebuild -destinationflagbuild-for-testing的值。test-without-building

另一个可以提供帮助的建议是将ENABLE_ONLY_ACTIVE_RESOURCES构建设置切换到NO.


推荐阅读