1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Firebase] Xcode 26, iOS 26 でアプリ起動時にクラッシュした話

Posted at

技術

  • 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)

主にクラッシュするタイミングとしては、AppDelegatedidFinishLaunching で発生します。

解決方法

Network フレームワークを import し、TLS接続オプションのデフォルト・セットを初期化します。

Swiftで書く場合、UIKit の場合は以下のように、

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の場合は、以下のように書くとビルドが通りました。

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 の対応が完了していると思うので、これは一時的な対応になりそうですね。

関連Issue

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?