技術
- Xcode 26.0.0 beta, beta.2
- iOS 26
- Firebase iOS SDK 11.14.0
- ライブラリ管理:Swift Package Manager
概要
WWDC25 で iOS26, Xcode26 の登場と、新しいデザイン "Liuqid Glass" が登場しました。
なので、早速 Xcode26 Beta をインストールして、シュミレータで起動したところクラッシュが発生。原因は Xcode 26 からセキュリティがアップデートしており、それが原因でクラッシュするといった流れでした。
この記事では、対応方法と原因について解説してます。
エラーコード
特別、これといったエラーメッセージは表示されていません。(だから特定が大変だった...)
Thread 1: EXC_BREAKPOINT (code=1, subcode=0x257b8318c)
主にクラッシュするタイミングとしては、AppDelegate
の didFinishLaunching
で発生します。
解決方法
Network フレームワークを import
し、TLS接続オプションのデフォルト・セットを初期化します。
Swiftで書く場合、UIKit の場合は以下のように、
import UIKit
import Network // 1. Networkフレームワークをインポート
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 2. この行を追加して、ネットワークスタックを早期に初期化する
// 関数の戻り値は使わないので、 `_ = ` で破棄することを明示します。
nw_tls_create_options()
return true
}
// ... その他のメソッド
}
SwiftUIの場合は、以下のように書くとビルドが通りました。
import SwiftUI
import Network // 1. Networkフレームワークをインポート
@main
struct YourAppNameApp: App {
init() {
// 2. この行を追加して、ネットワークスタックを早期に初期化する
// 関数の戻り値は使わないので、 `_ = ` で破棄することを明示します。
nw_tls_create_options()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
原因・考察
原因としては、iOS26, MacOS26 から URLSession
および、Network
フレームワークのデフォルトの最小TLSバージョンが1.0 から 1.2 にアップデートしたのが原因と考えられます。: iOS & iPadOS 26 Beta 2 Release Notes
なので、import Network
して、AppDelegate に nw_tls_create_options()
を呼んでTLS接続オプションのデフォルト・セットを初期化することで、明示的に設定を緩めた形になります。
TLS接続とは
TLS とは、"Transport Layer Security" の略で、インターネット上でデータを暗語化・送受信する仕組みのことです。
近年、TLS1.0, 1.1 でダウングレード攻撃による脆弱性が発見されており、1.2, 1.3 への移行が必要とされています。:参考
今回、iOS26, macOS26 で TLS接続が1.2 になったことにより、より安全にネットワークに接続できるようになったということですね。
最後に
この記事の執筆時点(6月29日現在)では、こういった対応が必要ですが、iOS26, macOS26 の正式リリースではきっと Firebase SDK の対応が完了していると思うので、これは一時的な対応になりそうですね。