71

拡張プロジェクトをビルドしようとしていますが、Xcode が件名にエラーをスローし続けます。

Xcode ログ エラー

当然のことながら、拡張機能のバンドル ID にはアプリのバンドル IDプレフィックスとして付けられます。

商品名:ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier

拡張バンドル ID

ビルド フォルダーのクリーニングと再構築を試みましたが、うまくいきませんでした。面白いことに、プロジェクト全体が数回ビルドされましたが、コードと UI を変更した後、失敗し始めました。新しいプロジェクトを作成しても、5 ~ 6 回のビルドで同じことが起こります。

他の誰かがこのエラーに遭遇しましたか? 解決策または回避策のヒントはありますか?

4

21 に答える 21

33

ビルドの前にクリーンを試してください。これで問題が解決しました(Xcode 6b2)。

于 2014-06-19T15:16:23.490 に答える
22

次のような変更を加えました。

メインのアプリ バンドル ID: com.myapp.testapp

拡張アプリ バンドル ID: com.myapp.testapp.myextension

そしてその作品!!!

于 2017-01-03T10:28:50.157 に答える
14

拡張機能の info.plist の BundleID を必要なものに手動で変更する必要がありました。

レーダーを提出しました:rdar://17487465

于 2014-06-27T19:12:56.167 に答える
14

ターゲット - >一般 - >埋め込みバイナリは古いものを削除し、新しいものを選択します。これが私がこの問題を解決した方法でした ここに画像の説明を入力

于 2015-11-27T04:11:29.830 に答える
13

これは私を助けました:

拡張機能には、プレフィックスとして親のバンドル ID が必要です。

たとえば、アプリが com.ronnathan.myapp の場合、内線番号は com.ronnathan.myapp.today である必要があります。アプリのターゲットの名前を変更したので、拡張機能のターゲットに移動して、名前を一致するように変更します。

ここから撮影

于 2015-05-18T12:03:45.547 に答える
5

同じエラーが発生しました。おそらく Today ウィジェットのような拡張機能を追加します。拡張機能自体もバイナリであるため、独自の plist があり、拡張機能の plist でバンドル ID の前にアプリのバンドル ID が付けられていることを確認してください。お役に立てれば。

于 2014-06-12T22:04:55.570 に答える
4

私の場合、App bundle identifier を変更したときにこのエラーが発生しました。私のプロジェクトには WatchKit アプリもあります。

これを修正するには、WatchKit 拡張機能と WatchKit アプリ バンドル ID プレフィックスをアプリの新しいバンドル ID で更新します。両方のターゲットで info.plist を確認してください。

また、以下を更新します -

新しい Watch App バンドル ID で以下を更新します。WatchKit 拡張機能 > Info.plist - NSExtension->NSExtensionAttributes->WKAppBundleIdentifier

以下を新しいアプリ ID で更新します。WatchKit アプリ > Info.plist - WKCompanionAppBundleIdentifier

すべての値を変更した後は、製品を一度クリーニングすることを忘れないでください。

于 2015-07-06T11:57:41.603 に答える
2

以下を確認してください。

ターゲット アプリ A -> ビルド設定 -> コード署名 -> リリース

は以下と同じです:

ターゲット アプリ A (拡張機能) -> ビルド設定 -> コード署名 -> リリース

于 2015-02-24T11:00:29.223 に答える
0

私は同じ問題を抱えていました。WatchKit 拡張機能の CFBundleIdentifier を、最初に WatchKit 拡張機能を追加したときに使用した元の値以外の値に変更し、共有アプリ グループの資格を再設定すると、修正されました。

于 2015-05-04T17:27:22.630 に答える
0

派生フォルダーをクリーンアップするだけで、これらの状況で役立ちます。

于 2016-01-12T20:06:29.493 に答える
0

各ターゲットに移動 > ビルド設定 > 製品バンドル識別子 > (名前を変更)

于 2016-11-22T17:43:43.783 に答える
0

解決策はすでに多くの回答でカバーされています:

含まれるアプリ バンドル ID:com.alphabet.gmail

拡張アプリ バンドル ID:com.alphabet.gmail.notificationServiceExtension

しかし、なぜプレフィックスを付ける必要があるのでしょうか。

Apple は、アプリ間の通信が含まれているアプリの bundleId によって行われることを望んでおり、開発者がアプリ Extensionの bundleID にメッセージを送信する必要がないようにするためです。

たとえばapns-topic、アプリが画像をダウンロードできるように、サーバーは APNS にプッシュ通知を送信するという名前のフィールドを送信する必要があります。そのトピックの値は bundleID です。

ただし、サービス拡張機能のバンドル ID ではありません。メインアプリ自体の bundleId です。

ただし、実際の物理電話では、bundleID (com.alphabet.gmail.notificationServiceExtensionと) の両方がcom.alphabet.gmail存在します。

では、OS はどのようにして通知をメイン アプリではなくアプリ拡張機能に配信するのでしょうか?

私の理解では、OS は次のようなターゲットを探します。

  • 例のプレフィックスが付いた BundleId がありcom.alphabet.gmailます: Extension app bundle id:com.alphabet.gmail.notification
  • NSExtensionPointIdentifier設定されていcom.apple.usernotifications.serviceます。この値には触れないでください。これは、Apple によって事前に定義された値です。

ここに画像の説明を入力

于 2020-06-10T04:06:38.220 に答える
0

拡張機能のバンドル ID の先頭にアプリ バンドル ID が付いていることを確認してください。それでもエラーが発生する場合は、拡張機能の .plist ファイルに移動し、バンドル ID を変更します。

于 2018-04-11T08:14:01.217 に答える