解决之前上架的 App 在 iOS 9 会闪退问题 (更新:已有 Hotfix)
最新更新:(2015.10.02)
开发环境:
- Delphi 10 Seattle
- OS X El Capitan v10.11
- Xcode v7.0.1
- iOS SDK v9.0
真机测试(以下机种皆不闪退):
- iPhone 3GS v6.1.2 (32 bit)
- iPhone 4 v7.1.2 (32 bit)
- iPhone 4S v9.0 (32 bit)
- iPhone 5S v8.4.1 (64 bit)
- iPad 2 mini v9.0 (64 bit)
※ 使用上面的配置,及 EMB 官方提供的 Hotfix,真机皆没有问题,下面的闪退问题可以略过了。
问题一:iOS 9 于 2015/09/16 开放下载了,但之前使用 Delphi(XE8 或之前的版) 开发上架的 App 皆会闪退,无法运行在 iOS 9。
问题二:使用 Delphi 10 Seattle + Xcode 7.0 + iOS SDK 9.0 发布到 iOS 9 的真机没有问题,但发布到 iOS 6~8 的机子会闪退。
为了解决以上问题,可以参考下列方法:
1. 使用 Delphi 10 Seattle 重新上架:
开发环境:
- Delphi 10 Seattle
- Xcode 7.0
- iOS SDK 8.4(这个是关键,一定要用 SDK 8.4 才不会闪退)
真机测试(以下机种皆不闪退):
- iPhone 3GS v6.1.2 (32 bit)
- iPhone 4 v7.1.2 (32 bit)
- iPhone 4S v9.0 (32 bit)
- iPhone 5S v8.4.1 (64 bit)
- iPad 2 mini v9.0 (64 bit)
2. 使用 XE8 重新上架:
开发环境:
- Delphi XE8 update 1
- Xcode 6.4
- iOS SDK 8.4
修改源码:
- 需依官方建议的方法,修改 XE8 的源码(如果不修改,会闪退):
http://community.embarcadero.com/blogs/entry/workaround-steps-for-building-ios-32-bit-applications-for-ios-9-with-xe7-and-xe8
真机测试(以下机种皆不闪退):
- iPhone 3GS v6.1.2 (32 bit)
- iPhone 4 v7.1.2 (32 bit)
- iPhone 4S v9.0 (32 bit)
- iPhone 5S v8.4.1 (64 bit)
- iPad 2 mini v9.0 (64 bit)
赶快重新上架新版 App 吧。
追加整理,依版本整理如下(2015.09.23):
- Xcode 7.0 + SDK 8.4
- XE8 + iOS 6 = 正常
- XE8 + iOS 7 = 正常
- XE8 + iOS 8 = 正常
- XE8 + iOS 9 = 正常
- Xcode 6.4 + SDK 8.4
- XE8 + iOS 6 = 正常
- XE8 + iOS 7 = 正常
- XE8 + iOS 8 = 正常
- XE8 + iOS 9 = 闪退(使用官方修复文件,不闪退)
- Xcode 7.0 + SDK 9.0
- D10 + iOS 6 = 闪退
- D10 + iOS 7 = 闪退
- D10 + iOS 8 = 闪退
- D10 + iOS 9 = 正常
官方 QC 讨论:
https://quality.embarcadero.com/browse/RSP-12324
官方 Apple Xcode 各版本下載位置:
https://developer.apple.com/downloads/
- OS X El Capitan