アプリをビルドしようとしていますが、失敗しました。以下のメッセージが表示されます。
エラー:WatchKit拡張機能には、バンドル識別子が「com.domain.appname.watchkitapp」と一致するWatchKitアプリが含まれていません。 WatchKit拡張機能のInfo.plistのWKAppBundleIdentifierの値が、WatchKitアプリのInfo.plistのCFBundleIdentifierの値と一致することを確認します。
最近変更しました"com.domain.appname.watchkitapp"
から"com.domain.differentappname.watchkitapp"
。
これをどこで変更すればよいかわかりません。
バンドル識別子を変更するときは注意が必要です。設定方法は次のとおりです(iPhoneアプリ、Watchkit拡張機能)のInfo.plistで各識別子を変更する必要がありますおよびWatchkit App)の場合:
任意のバンドル識別子を設定します(「バンドル識別子」プロパティ)。
例:
Bundle identifier: com.fruitcompany.orange
ここのバンドル識別子mustは、次の例のように、iPhoneアプリケーションの識別子をプレフィックスとして付けます:
Bundle identifier: com.fruitcompany.orange.watchkit
また、次のように、iPhoneアプリケーションバンドル識別子と一致するmustと一致するWKCompanionAppBundleIdentifier
を変更する必要があります。
WKCompanionAppBundleIdentifier: com.fruitcompany.orange
ここのバンドル識別子mustは、次の例のように、iPhoneアプリケーションの識別子をプレフィックスとして付けます:
Bundle identifier: com.fruitcompany.orange.watchkit.extension
WKAppBundleIdentifier
属性の下にNSExtension
を設定する必要もあります。
WKAppBundleIdentifier
識別子mustは、次のようにWatchKitアプリバンドル識別子と一致します。
WKAppBundleIdentifier: com.fruitcompany.orange.watchkit
最初に、@ DejanSkledarによるこのページの優れた回答を強調します。回答に記載されている場所はすべて重要です。
そうは言っても、その答えの正確な設定は私には十分ではありませんでした。この答えを補足し、watchkit 2以降、アプリ、ウォッチアプリ、そして最後にバンドルIDの観点からアプリ拡張機能への作業に必要な階層があるように見えることを指摘したいと思います。
関連する問題に関するedwardmpの答え を見つけた後、私のために働いた対応するinfo.plistファイルのそれぞれの設定は次のとおりです。
iPhoneアプリのバンドルID:com.domain.yourapp
ウォッチアプリのバンドルID:com.domain.yourapp.watchkit
Watchkitの拡張バンドルID:com.domain.yourapp.watchkit.extension
ご覧のとおり、iPhoneアプリにはwatchkitアプリがあり、これ自体にたまたまwatchkit拡張機能があります。これらの各レベルは、それぞれのバンドルIDに反映する必要があります。
関係を完了すると、時計アプリはそれを使用して所属するiPhoneアプリ(WKCompanionAppBundleIdentifier)を指し、時計拡張機能はそれが属する時計アプリ(WKAppBundleIdentifier)を指す必要があります。
アプリのWKCompanionAppBundleIdentifierを見る:com.domain.yourapp
ウォッチアプリの拡張機能WKAppBundleIdentifier:com.domain.yourapp.watchkit
うまくいけば、私はこれに数時間苦労しなければならなかったので、誰かが時間を節約できることを願っています:(
また、プロジェクトiOSコンパニオンアプリの情報p.listのWKCompanionAppBundleidentifierキーを、ウォッチキット拡張情報info.plistのWKAppBundleIdentiferキーと一致するように変更する必要があります。以前のウォッチキットプロジェクトをコピーし、ウォッチキット拡張info.plistのWKAppBundleIdentifierをウォッチキットinfo.plistのバンドル識別子と一致するように変更したときに、この問題が見つかりましたが、プロジェクトでも同じエラーが発生しました。 Finderに移動し、iOSコンパニオンプロジェクトinfo.plistを見つけてダブルクリックし、必要に応じてWKCompanionAppBundleIdentiferキーを変更する必要があります。 Xcodeでinfo.plistを探しても、このキーを見ることができませんでした。
したがって、テストデバイスで実行したいだけの場合、必ずしも何かを変更する必要はありません。ただし、ウォッチアプリをテストするには、さらに2つのプロビジョニングプロファイルを要求する必要があります。これらの2つの追加の識別子は、拡張ターゲットおよびウォッチアプリターゲットから取得できます。これは、ウォッチアプリをApp Storeにアップロードするときに行う必要があるものと同じです。