web-dev-qa-db-ja.com

Xcode 6エラー:「埋め込みバイナリのバンドル識別子の前に親アプリのバンドル識別子が付いていません。」

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

Xcode log error

必然的に、拡張機能のバンドルID isにアプリのバンドルIDがプレフィックスとして追加されます。

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

Extension bundle id

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

他の誰かがこのエラーに遭遇しましたか?ソリューションまたは回避策のヒントはありますか?

61
chitza

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

31
Julian

WatchOS 2が到着すると、バンドルIDの動作が変更されたようです。

以前は、次のような拡張バンドル識別子がありました。

com.mycompany.myappname.watchkitextension

Stackoverflowの他のどこかで、拡張バンドル識別子はこの形式である必要があると言及されましたが、Xcodeを試したとしてもエラーが発生し続けました。

唯一可能な解決策は、拡張バンドル識別子を次のように変更することです。

com.mycompany.myappname.watchkitapp.watchkitextension

WatchOS 1アプリの場合はそうではなかったと確信しています。この変更による問題は、バンドル識別子com.mycompany.myappname.watchkitextensionのアプリIDを実際に生成できないことです。これは必要ありません。ビルド設定のすべてのプロビジョニングプロファイルを自動に設定し、リリース/アドホック/デバッグスキームに適切なコード署名証明書を使用することを忘れないでください。

Xcodeが問題を修正することを提案したため、このアプローチが機能することが実際にわかりました。

29
edwardmp

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

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

そして

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

そしてその作品!!!

17

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

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

14

これは私を助けました:

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

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

ここから取得

12
dollar2048

ターゲット->一般->埋め込みバイナリは古いものを削除し、新しいものを選択しましたこれはこの問題の解決方法でした enter image description here

8
Michael Yang

拡張機能もバイナリ自体であるため、独自のplistがあり、拡張機能のplistでバンドルIDの先頭にアプリのバンドルIDが付いていることを確認してください。お役に立てれば。

4
coolbeet

私の場合、アプリバンドル識別子を変更するとこのエラーが発生しました。また、プロジェクトにはWatchKitアプリがあります。

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

以下も更新してください-

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

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

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

4
Namit Gupta

クローンアプリを実行するためにターゲットを複製した可能性があります。たとえば、各ターゲットを選択して複製しました。ウォッチキット拡張機能ターゲットのクローンを作成すると、そのターゲットメンバーシップが元のウォッチアプリに自動的に割り当てられる可能性があります。

これを修正するには、Project Navigatorで元の「WatchKit extension.appex」ファイルに移動し、新しいクローン監視アプリターゲットのFile InspectorでTarget Membershipを選択解除する必要があります。複製した「Watchkit extension-copy.appex」に対して反対の操作を行い、そこで選択された「watch app-copy」ターゲットのみが複製されていることを確認する必要があります。

3

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

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

と同じです:

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

2
Santana

ここに挙げた解決策のほとんどを試しましたが、Xcode 9.4の問題を解決する助けにはなりませんでした

このSO Answer は、問題の解決に役立ちました。

私がやったことは単に

  1. すべてのターゲットとプロジェクトの署名の自動管理のチェックを外します

  2. コード署名により、すべてのターゲットおよびプロジェクトのiOS開発者になります。

  3. プロジェクトをクリーンアップしてから、プロジェクトを閉じて開きます。

  4. ターゲットの署名の自動管理を有効にし、開発者アカウントを選択します。次にビルドします。

エラーを修正しました。 Appleがこれらのタイプの問題を解決するかどうかはわかりません。多くの時間を消費します。

編集:私は この答え も使用しています、私のターゲットバンドルIDcom.companyname .projectnameおよび拡張バンドルidcom.companyname.projectname.myextension

1
R. Mohan

これは私にとって役に立ちました。

私が得ていた:

Xcodeは、一致するiOSアプリ開発プロビジョニングプロファイルを見つけることができませんでした

そこで、バンドル識別子の名前、つまりcom.example.somethingからcom.example.something1、そしてビルドをクリーンアップしました。

すべての依存バンドルIDも変更するようにしてください。njoy!!

0
Hitesh

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

0

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

0
Marin

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

0
Manish Mahajan

〜/ Library/MobileDevice/Provisioning Profilesからアプリプロビジョニングプロファイルを削除し、Xcodeをリロードして、Xcodeのプロンプトが表示されたときに問題を修正するだけです(またはiOSデベロッパーセンターから手動でダウンロードします)。

この問題を修正しました。

0
XeroX

問題は、プロジェクトに追加するときに「フォルダー参照の作成」を使用してフォルダーを追加したことです(私がしたように)。 @Jacobの修正は私にとってはうまくいきませんでした:(

enter image description here

プロジェクトに追加したフォルダー参照を削除してから、クリーンアップしてビルドする必要がありましたが、修正されました。

enter image description here

0
taber

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

0
Ari Braginsky