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?

【Swift】SourceKit-LSPの「Loading the standard library failed」エラーの解消方法

1
Posted at

はじめに

1年くらい前に作っていたSwiftプロジェクトを久々にVSCodeで開いたら、すべての.swiftファイルの1行目に

Internal SourceKit error: error response (Request Failed): Loading the standard library failed

というエラーが出るようになりました。

エラー文で検索しても、これといった情報が見つからず…

AIと試行錯誤してみたところ原因は1つではなく、いくつかの要因が積み重なっていました。同じ現象で詰まった人向けに、原因の切り分け方をまとめておきます。

原因1:buildServer.jsonが古いパスを指したままだった

VSCode/Antigravity上のSourceKit-LSPは、Xcodeプロジェクトのビルド設定を知るためにxcode-build-serverが生成するbuildServer.json(Build Server Protocol設定)を経由します。ここがまず盲点で、プロジェクトのディレクトリを移動・リネームした際にこのファイルを再生成していなかったため、存在しない旧パスを参照したままになっていました。

"workspace": "/Users/xxx/旧ディレクトリ/プロジェクト名.xcodeproj/project.xcworkspace"

これは以下のコマンドを現在のディレクトリで再実行してbuildServer.jsonを作り直すことで解消しました。

xcode-build-server config -project <name>.xcodeproj -scheme <scheme>

ちなみにこのbuildServer.jsonはあくまで「Xcode以外のエディタからXcodeプロジェクトを理解可能にするための橋渡しファイル」なので、Xcode本体で開く分にはこのファイルは一切関係ありません。Xcodeは自前のプロジェクトモデルから直接ビルド設定を取得できるためです。

原因2:移動後、一度もフルビルドしていなかった

buildServer.jsonを直しても直らなかったので次を疑いました。ディレクトリを移動すると、Xcodeは新しいパスに対応した新しいDerivedDataフォルダを使うようになります。そしてxcode-build-serverは、実はDerivedData内のビルドログを解析してファイルごとのコンパイラフラグ(SDKパスなど)を取得する仕組みです。

確認してみると、新しいDerivedDataにはLogs/Build/*.xcactivitylogが1つも存在しておらず(xcodebuild -listによるパッケージ解決ログしかない状態)、ビルドログが無いためSourceKit-LSPが各ファイルの正しいコンパイラ引数を得られず、標準ライブラリの解決に失敗していた、というのが2つ目の要因でした。

原因3:そもそもビルドがコンパイルエラーで通っていなかった

ここまでの対処をしても解決しなかったので、疑いを確信に変えるべく実際にビルドしてみることにしました。

xcodebuild build -project <name>.xcodeproj -scheme <scheme> -destination 'generic/platform=iOS Simulator'

すると、いくつか未解決のコンパイルエラーが見つかりました(詳細は割愛しますが、ジェネリック関数の型参照ミスやimport先の誤りなど、地味な書きかけコードが原因でした)。

ここで理解したのが、Xcode 26.2 / Swift 6.2のSourceKit-LSPはbuildServer.json経由でバックグラウンドインデックスビルドを自動実行しているということです。このビルドがコンパイルエラーで失敗すると、個別ファイルへの診断ではなく「ビルド全体が壊れている」ことを示す汎用エラーバナーが、開いているすべてのSwiftファイルの1行目に出てしまいます。これが今回観測していた症状の直接の原因でした。

対処法まとめ

  1. xcode-build-server config -project <name>.xcodeproj -scheme <scheme>buildServer.jsonを現在のパスで再生成する
  2. xcodebuild build -project <name>.xcodeproj -scheme <scheme> -destination 'generic/platform=iOS Simulator' を一度実行し、ビルドが通るか確認する(同時にビルドログも生成される)
  3. ビルドエラーが出たら、1つずつ解消する(SourceKit-LSPのエラーはビルドが通らない限り消えません)
  4. BUILD SUCCEEDEDになったらエディタを再起動して確認する

まとめ

  • プロジェクトのディレクトリを移動・リネームしたら、buildServer.jsonは必ず再生成する
  • そもそもコンパイルエラーを出しっぱなしで、プロジェクトを1年以上放置してはいけない(戒め)
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?