ios - 资产目录在 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
解决方案
问题出在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 -destination
flagbuild-for-testing
的值。test-without-building
另一个可以提供帮助的建议是将ENABLE_ONLY_ACTIVE_RESOURCES
构建设置切换到NO
.
推荐阅读
- binding - 在循环中生成视图时,绑定在视图中不起作用
- javascript - React-Native-我将如何根据特定的键值以展开格式打印这个对象数组?
- r - 统计类别内重复测量期间类别变量的变化次数
- php - 如何使用 orderBy 和 count 方法
- java - 防止上传中间 Maven 工件
- mysql - 尝试连接空行或 NULL 行时,有没有办法在 CONCAT_WS 中不显示分隔符?
- java - 有没有办法在不运行 maven build 的情况下测试 war 文件中的代码更改?
- swift - NSInvalidArgumentException:当脚本消息处理程序已经存在时如何检查名称?
- amazon-s3 - 生命周期管理是否删除了 s3 前缀?
- mysql - MySql - 时间安排查询