👻

undefined method os_version' for nil (NoMethodError) エラー解消手順

2024/11/20に公開

Fastlane Snapshot 使用時のエラー対処法

Fastlaneを使用してスクリーンショットを自動生成する際、次のようなエラーが発生しました。
undefined method os_version' for nil (NoMethodError)

/opt/homebrew/Cellar/fastlane/2.225.0/libexec/gems/fastlane-2.225.0/fastlane_core/lib/fastlane_core/device_manager.rb:135:in latest_simulator_version_for_device': [!] undefined method os_version' for nil (NoMethodError)
              .os_version
              ^^^^^^^^^^^

原因

エラーの原因は、Fastlaneが対象のシミュレーターを見つけられないことに起因しています。この問題は、SnapfileやXcodeの設定で、シミュレーターが正しく指定されていない場合、またはサポートされていないデバイスが指定されている場合に発生することが多いです。

おもな原因

  • Fastlane がデフォルトで「Mac」をデバイスとして選択している。
  • Xcode のベータ版を使用していたり、特定の設定が正しくないこと。

解決方法

このエラーを解決するために、以下の手順を試してください。

  1. サポートされているデバイスの設定確認

    • Snapfile (または Fastfile) 内でのデバイス指定方法が正しいことを確認します。以下のように設定されている必要があります:
      devices(["iPhone 16"])
      
    • 上で指定したデバイスが、Xcode の上部タブ内の Window -> Devices and Simulators で表示されるデバイスまたはシミュレーターの一覧に表示されていることを確認します。

    デバイス一覧の確認

    • デバイス一覧は xcrun simctl list devices available コマンドでも確認可能です。
  2. Macを削除

    • XcodeのUITestsのTargets内にある「Supported Destinations」から「Mac」を削除します。これにより、Fastlaneがシミュレーターを正しく認識できるようになります。

    • BEFORE:
      Macが含まれている状態

    • AFTER:
      Macを削除した状態

    • その後、再度 fastlane snapshot を実行して、エラーが解消されたかを確認します。

  3. Fastlaneのアップデート

    • Fastlaneの最新バージョンを確認し、アップデートすることも重要です。以下のコマンドを使用して、gemからアップデートすることができます:
      gem update fastlane
      
    • また、Homebrewを使用してFastlaneをアップデートする場合は、次のコマンドを実行します:
      brew upgrade fastlane
      

参考資料

このエラーについての詳細な議論や解決策が含まれているGitHubのリンクも参照してください:

まとめ

Fastlaneを使用したスクリーンショット生成中のエラーは、特にシミュレーターの指定に注意することで多くの場合解決できます。問題が解消しない場合は、環境設定やFastlaneのバージョンを再確認することをお勧めします。

Discussion