1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Swift]環境変数ENABLE_PREVIEWSがXcode16で機能しない

Posted at

始めに

SwiftLintやSwiftFormatをビルドフェーズで実行している場合、Previewが更新されるたびにこれらが実行され、頻繁にクラッシュが発生してしまいました。そのため、以下の対応を試してみましたが、どうやら期待通りに機能していないようなので、解決策を調べてみました。環境変数のENABLE_PREVIEWSはPreviewビルド時にYESが入るらしいです。

# Xcode Preview のビルド時はスクリプトを実行しない
if [ \"$ENABLE_PREVIEWS\" == \"YES\" ]; then
  exit 0
fi

# Formatter, Generator の実行
...

調査

Xcode16だとデバッグビルドとPreviewビルドの違いがなくなり、ENABLE_PREVIEWSは機能しなくなったみたいです。短期的な解決策として、以下が提示されていましたが、OpenAPIらへんでエラー出まくりだったのでLegacyPreviewsの使用はできなかったです。私の場合、ビルド時に生成して使用しているOpenAPIがPreviewで使えなくなっている感じでした。

Editor > Canvas > Use Legacy Previews Execution

Preview表示時の環境変数を見てみたましたが、期待した値は取ってこれないですね、、

ENABLE_PREVIEWS: NO
XCODE_RUNNING_FOR_PREVIEWS: // 空

面倒ですが、シミュレーターの場合、ビルド時は実行しないという方法で手を打つ、、?
実機ビルドをする必要があるので、解決策としてはよくない気がします。なので、Previewのクラッシュが目立つ場合、一時的に設定を消す、手動で行うなどの対応が必要かも?

if [ -z $CI ] || [ $CI = false ] && [ "$EFFECTIVE_PLATFORM_NAME" != "-iphonesimulator" ]; then
  xcrun --sdk macosx mint run swiftlint
else 
    echo 'warning: skip SwiftLint run script'
fi

終わりに

良い方法を知っている方がいらっしゃいましたら、ご教授願います🙇

参考

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?