使用两个不同的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
。
答案 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 -destination
和build-for-testing
中test-without-building
标志的值。
另一个可以帮助您的建议是将ENABLE_ONLY_ACTIVE_RESOURCES
的构建设置切换为NO
。