🥺
【watchOS】Missing or Invalid Principal Class: (ComplicationController).
概要
SwiftUIでApple Watchアプリを開発していて、どうにもコンプリケーションが表示されてくれない。ログを見ると何やらエラーが表示されてるけど、その内容通り確認しても問題なさそう。という感じでめちゃくちゃにハマってしまったので二度とハマらないためにメモります。
環境はXcode 13.3/watchOS 8.5です。
エラー内容
xxxのところはアプリ名です
xxx WatchKit Extension[17544:116415]
Missing or Invalid Principal Class: (ComplicationController).
Please check 'ClockKit Complication - Principal' Class property in WatchKit Extension's Info.plist
曰く、 ComplicationController
が見つからない、WatchKit Extensionの Info.plist
をチェックせよとのこと。
Info.plist
に書く
失敗パターン: WatchKit Extensionの Info.plist
ClockKit Complication - Principal を書いてました。
.xcodeproj
)に書く
成功パターン: プロジェクトファイル(こっちが正解でした。。。
ここを設定すると、 Info.plist
の同項目は自動的に消えてくれました。
これで無事ComplicationControllerで設定したコンプリケーションが表示されるようになりました。
考察
SwiftUIでプロジェクトを新規作成すると、iOSアプリの場合 Info.plist
の自動生成は行われません。一方、Watch Extensionの方では生成されます。Watch Extensionの方の Info.plist
は必要なのだろうか…🤔
Discussion