最近线上版本出现了一个严重的Bug, iOS系统版本在9.1、9.2.1系统上面崩溃, 而在其他版本上面都没有任何问题, 并且对于直接通过Xcode打包安装、蒲公英安装都没有任何问题, 只对于从App Store上面下载的才会崩溃.
解决崩溃
崩溃原因
- bugtags奔溃原因是:
Signal 10 was raised. SIGBUS
- umeng奔溃原因是:
Application received signal SIGSEV
, 但是又找不到具体的原因
在Xcode 8中,当你资源文件中[含有16位图]或者[图片显示模式γ值为’P3’], 如允许该App的系统为iOS 9.1或者iOS 9.2.1, 那么基本上都会崩溃, 通过崩溃时的参数可以看出来, 基本都是内存吃紧.
找到出问题的图片
- 打包ipa包
- 解压ipa包(右键—打开方式—归档使用工具), 找到
Payload
中的项目包 - 右键—显示包内容—找到
Assets.car
- 也可以使用命令
cd 项目所在的位置
find . -name 'Assets.car'
查找
- 使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件
sudo xcrun --sdk iphoneos assetutil --info Assets.car路径 > xxx.json
- 查找该文件中包含下面字段的图片名称
"DisplayGamut": "P3"
"BitsPerSample": 16

解决
找到这些图片, 删除或者替换它们.
测试
由于通过Xcode直接打包, 或者上传蒲公英进行分下测试时, 运行在相关崩溃系统的手机上时不会崩溃, 所有这里需要使用苹果自带的测试工具 TestFlight , TestFlight上面会保留上传到App Store上面的ipa包90天.
需要测试手机安装TestFlight
测试手机需要从App Store安装TestFlight, 并登陆需要添加测试人的Apple ID.
上传新版本
在itunesconnect中登录你的开发者账号, 在我的App
——TestFlight
中可以看到构建版本
和测试员和群组
.
这里可以看到, 能测试的版本只能是构建版本, 所以需要新构建一个版本, 上传ipa包

添加测试人员
测试人员可以在用户和职能中添加.
- iTunes Connect 用户
- 它可以管理的账户或者相关功能, 管理、财务、App 管理、开发人员、营销、销售、客户支持、报告
- TestFlight Beta 版测试员
- 该功能快要移除了, 现在在具体的项目中添加测试人员
沙箱技术测试员
- 沙箱技术测试员可让您在向用户提供 Apple Pay 交易、App 内购买项目、Game Center 功能及本地化版本之前进行测试。
也可以在具体的App目录下的TestFlight中添加测试人员
- 首先需要添加群组
- 然后再该群组中添加测试人员

邀请测试
iTunes Connect 用户
如果是iTunes Connect 用户
, 可以在iTunes Connect 用户
中选中人员, 然后对应的邮箱会收到邀请邮件, 里面有一个链接, 点击后会获取到一个验证码, 打开手机上面的TestFlight
, 输入该验证码就会看到测试的App, 还可以选择不同的版本.
自定义群组和里面的测试人员
您可以将任何人添加至此群组,被添加的人将可使用 TestFlight App 测试构建版本。构建版本可能需要通过 Beta 版 App 审核, 并且需要提供用户名和密码, 构建成功之后该群组中的测试人员或收到邀请邮件.
后记
最新更新, 现在从TestFlight安装测试版App更加方便, 外部链接无需被邀请人的邮箱, 直接发送链接给测试人通过testFlight的App安装, 但是外部链接生成前, 需要通过beta版本的审核, 大约需要1个工作日左右, 相比较而言, 测试安装更加便捷了