今天测试给我反馈了一个bug,在iOS10的iPhone5手机出现了白屏的现象,先说下我们的项目结构。我们的项目是一个ionic工程,在里面有一个原生的模块,当用户进入原生模块之后,白屏。刚开始是百思不得其解,后来想是不是iOS13的问题,因为之前在info.plist里新加了UIUserInterfaceStyle
字段,刚开始在这个方向去找问题,怎么也找不到,后来换了一种思路,白屏说明view没有加载出来,而view是由xib创建的,是不是bundle出了问题?最后通过比对bundle的info.plist文件,最终找到了原因,bundle的plist文件里多了一个UIRequiredDeviceCapabilities
字段 o(╥﹏╥)o。
我们来看下这个字段是什么意思
A key that tells iTunes and the App Store know which device-related features an application requires in order to run. iTunes and the mobile App Store use this list to prevent customers from installing applications on a device that does not support the listed capabilities.
The value of this key is either an array or a dictionary. If you use an array, the presence of a given key indicates the corresponding feature is required. If you use a dictionary, you must specify a Boolean value for each key indicating whether the feature is required. In both cases, not including a key indicates that the feature is not required.
For a list of keys to include in the dictionary, see Information Property List Key Reference. This key is supported in iOS 3.0 and later.
大概意思是通过添加这个字段,可以对运行这个app加一些限制,比如我添加了arm64,这个app就仅能在arm64架构的手机上运行,所有armv7的手机就不能运行。
还有一些其他的字段,感兴趣的可以在下面的引用文件找到。
再来说下我的bug是怎么造成的,在我打包bundle的时候,是在DEBUG模式下打的,而在Buidl Setting-Build Active Architecture Onli字段下,DEBUG为YES,而且当前的设备选择是一台iPhone 6的手机,所以就导致在编译的过程中自动添加了UIRequiredDeviceCapabilities
,这个字段,且当前的限制为arm64(iPhone 6是arm64的手机),至此导致了这个bug。
不过还有一个很奇怪的是,添加了这个字段之后不管是xcode打包还是通过下发蒲公英的app,运行在iPhone 5的手机都是没有问题的,只有下载AppStore上的app才是有问题的。