既存のWatchkitアプリ(Xcode 6.2)を開くと、正しくコンパイルされ、シミュレーターが起動され(iPhone + Watch)、その後に意味のあるエラーが続きます。
'xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessageの起動エラー
すべてのシミュレーターでこの問題があります(iPhone 5/5S/6/6 +-38mm/42mm)
問題が何であるかについてのアイデアはありますか?
以前は使用されていたにもかかわらず、何らかの理由でアプリケーションがシミュレータで実行されたくないようです。同じプロジェクトに含まれるiPhoneアプリケーションは、他のWatchkitサンプルアプリケーションと同様に実行されます。
アプリのバンドルIDを変更しましたか?その場合、WatchKit拡張機能のWKAppBundleIdentifierを手動で更新し、さらにWatchKitアプリのWKCompanionAppBundleIdentifierを手動で更新する必要がある場合があります。
WKAppBundleIdentifierは、WatchKitアプリのバンドルIDと同じにする必要がある場合があります。
WatchKit Extensionのinfo.plistを確認してください。 NSExtension-NSExtensionAttributes-WKAppBundleIdentifier-xxxxx.watchkitapp
編集:明確にするための詳細な説明...
アプリターゲットの下で、[情報]タブに移動し、バンドルIDをcom.myappに設定します
次に、WatchKit Extensionターゲットの下で、[INFO]タブに移動し、バンドル識別子をcom.myapp.watchkitextensionに設定します
次に、まだWatchKit Extensionターゲットの下にあり、まだINFOタブの下で、NSExtension> NSExtensionAttributes> WKAppBundleIdentifierをcom.myapp.watchkitappに設定します。
つまり、1つは.watchkitextensionで終わり、もう1つは.watchkitappで終わります
Info.plistで「Your App WatchKit Extension」と「Your App WatchKit App」を確認してください。すべての識別子の最初の部分は同じでなければなりません。
私の場合、問題は「Your App WatchKit Extension」> NSExtension> NSExtensionAttributes> WKAppBundleIdentifierにありました。
8.3シミュレータを使用していることを確認してください。
8.2を使用すると、このメッセージが常に表示されました。ここにリストされているすべてのものを試して、これに何時間も苦労しました。 8.3に切り替えると解決しました。皮肉なことに、あなたはmust現在デプロイメントターゲットを8.2に設定していますが、ウォッチキットアプリを実行するには8.3が必要だと思います...
すべてのバンドル識別子を複数回チェックしましたが、問題を取り除くことができませんでした。ビルドフォルダーのクリーニングもうまくいきませんでした。
ただし、私のWatchKit拡張機能の機能でGame Centerをオフにするで整理することができました。
IOSホストアプリで有効にするように見えますが、WatchKit拡張機能で有効にすると、WatchKitを実行しようとするとSPErrorInvalidBundleNoGizmoBinaryMessageエラーが発生しますシミュレーター内のアプリ。問題なくビルドを完了します。
私はApple Watchのゲームを開発していて、Game Centerをサポートすることを楽しみにしていた。実際には、ホスティングiOSアプリと通信することを最初から計画していたが、それからWatchKit Extension自体の機能に記載されているGame Centerを見たので、すぐに対応できると思っていましたが、動作しないようなので、元の計画に固執してサポートしますホスティングiOSアプリを介して。
Xcodeバージョン6.2(6C131e)
編集: Xcodeバージョン6.3(6D570)と同じ問題
実際のデバイス(シミュレーターではない)の問題については、この投稿のすべてを実行してください: http://blog.jaredsinclair.com/post/117350678170/jareds-code-signing-tips-Apple-watch-edition
最も重要なこと:
3つのターゲットすべてに次のものが必要です。
そのターゲットの一意のアプリID、コード署名ID(すべてのターゲットに適用)、そのターゲットの一意のプロビジョニングプロファイル。
アプリIDが一貫していることを確認します。
アプリIDは次のようになります。
com.company.App-Name
com.company.App-Name.todaywidget
com.company.App-Name.watchkitapp
com.company.App-Name.watchkitextension
それでも機能しない場合は、時計からアプリを手動で削除し(アイコンを押したまま 'x'を押します)、もう一度やり直してください。これは私のためにそれをしたキッカーでした。
私もこれに苦労しています。これが、Xcode 7.1 iOS 9での私の問題を解決したものです。識別子の名前は、以下の名前に従ってください。
拡張機能には、WatchKitアプリターゲットの識別子+ .watchkitextension
が必要です
私はこれまでにこのスレッドに投稿されたすべてのものを試しましたが、それでも機能しませんでした。私はそれが機能していた時点までバックトラックし、どの時点でそれが壊れるかを理解するために行ったすべてのアクションをたどります...
結局のところ、WatchKitアプリのinfo.plistファイルは、カスタムのplistエントリを好きではありません。少なくとも、私の場合はそれがわかりました。 「MyAppBundlePrefix」というエントリを追加しましたが、これにより「Error Launching 'xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessage」が発生しました。
XCodeがそのエラーについてもう少し具体的な詳細を提供することを望みますが、力ずくの方法でそれを見つけるのに約5時間かかりました。