タグ: Xcode

  • Flutter iOSでビルドできない No such module ‘Flutter’ Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

    Flutter iOSでビルドできない No such module ‘Flutter’ Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

    Flutter で iOS用にbuild するも下記のエラーが AppDelegate.swift で起こってしまい、実行できません。

    No such module ‘Flutter’

    Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

    この記事はこれの解決方法です。

    解決方法

    Flutter プロジェクトのキャッシュを削除します。依存関係の問題を解消するために行います。

    flutter clean

    pubspec.yaml に従ってパッケージのダウンロードや更新、依存関係のセットアップを行います。

    flutter pud get

    ios ディレクトリに移動ます。

    cd ios

    ios/Podfile に基づいて Pods/ フォルダを作成します。また、ios/Podfile.lockを更新し、依存関係のバージョンを固定します。

    pod install

    xcode を書きコマンドで開きます。 Runner.xcodeproj ではないので注意⚠️

    open Runner.xcworkspace

    これで解決しない場合

    flutter をアップグレードしてみましょう。(私はこれで解決しました……。トホホ)アップグレードしたらまた、clean, pub get, pod install の手順を踏んでください。

    flutter upgrade

  • XCode 環境変数追加 Edit Scheme…

    XCode 環境変数追加 Edit Scheme…

    Flutter のプロジェクトで

    import Flutter
    import UIKit
    import GoogleMaps
    
    @main
    @objc class AppDelegate: FlutterAppDelegate {
      override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
      ) -> Bool {
        GMSServices.provideAPIKey(ProcessInfo.processInfo.environment["MY_API_KEY"]!)
        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
      }
    }
    Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

    のエラーが出ました。

    この際直打ちのAPIキーはやめて、環境変数に設置することにしました。

    やり方

    XCodeでプロジェクト名のところをクリックすると Edit Scheme… という項目があるのでクリックします。

    Environment Variables のところに + ボタンを押して、追加します。

    GOOGLE_MAPS_API_KEY
    
    hogehogehogehogehogehogehogeho

    みたいな感じで Name, Value に設定しました。

    その後、AppDelegate .swiftを以下のように書き換えました。

    import Flutter
    import UIKit
    import GoogleMaps
    
    @main
    @objc class AppDelegate: FlutterAppDelegate {
      override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
      ) -> Bool {
        
          // Xcode の環境変数から APIキー を取得
          if let apiKey = ProcessInfo.processInfo.environment["GOOGLE_MAPS_API_KEY"], !apiKey.isEmpty {
              GMSServices.provideAPIKey(apiKey)
          } else {
              fatalError("Google Maps API Key is missing. Please set GOOGLE_MAPS_API_KEY in Xcode's Environment Variables.")
          }
    
        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
      }
    }
    

    これで動作しました!やったー

  • 【コラム】Predictive Code Completion Model が追加された! Xcode Version 16.0

    【コラム】Predictive Code Completion Model が追加された! Xcode Version 16.0

    注意カスみたいな記事です

    ベータ版から入れている方には今更かもしれませんが、
    Xcode に Predictive Code Completion Model が追加されました!

    Predictive Code Completion Model は Xcode 16 に対応した予測コード補完機能です。VSCode の Copilot と似ており、コード入力時に提案してくれます。

    個人的に Copilot for Xcode を使用していたので Apple さんが純正で搭載してくれたのは嬉しく思います☺️

    動作条件

    • macOS Sequoia
    • 16GB RAM
    • Apple Silicon

    となっているようです。

    使用感

    実際に使ってみました。

    まずはコメントアウトで、どうしたいのかを記述して改行すると…。

    2,3秒後にこんな感じでうっすらした文字で候補を出してくれます。

    tab キーを押すと候補が確定されます。ここら辺の操作感も VScode Copilot と似ています。
    肝心な制度は微妙に感じました…。ちゃんと使いたいなら Copilot for Xcode といった外部プラグインを使うのが良いなと思いました。(2024/09/19現在の所感)

    今後に期待☺️

Home
About
Blog
Works
Contact