埋め込みバイナリ検証ユーティリティエラー

私のiPhoneで私のWatchKitアプリを実行しようとしている間昨日からXcodeは愚かなことをしています。 それは私にエラーを与えます:

埋め込みバイナリ検証ユーティリティエラー

     

エラー:警告:ディレクトリです

It's not very helpful and it seems like it's complaining about provisioning profiles for my Watchkit Extension target. I think I set it up correctly by following this answer.

これが私のプロファイルの設定方法です。 3つのアプリIDと6つのプロファイル(開発用に3つ、配布用に3つ)。

Main app: enter image description here

WatchKit Extension: enter image description here

WatchKit Watch App: enter image description here

15
@JackDewhurst最初のリリースでも私はその警告を受けました。私はそれを修正しました、しかし今アプリはアーカイブしません(私は時々私のiPhoneでそれを実行することができます)が、それは非常にイライラします。
追加された 著者 BalestraPatrick,
私はこのエラーも出ていますが、アーカイブしているときだけです。直前の3つの警告と関係があるかもしれません( "warning:コピーフェーズストリップをスキップし、バイナリはコード署名されています" x 3)。
追加された 著者 Jack Dewhurst,
わかりました私の以前の警告は問題ではありませんでした、それらを修正しました、そしてそれはまだ警告で失敗します:警告はディレクトリです
追加された 著者 Jack Dewhurst,

9 答え

I had my custom framework linked and embedded in both the WatchKit Extension and the App. Removing the framework from General > Embedded Binaries of the WatchKit Extension fixed it for me. I did have to delete my Build folder and restart Xcode.

6
追加された
WatchKit ExtensionのGeneral> Embedded Binariesをチェックしてください。あなたのフレームワークはそこにあってはいけません。
追加された 著者 respectTheCode,
詳しく教えてください。私は自分のフレームワークを自分のエクステンションのビルドフェーズでリンクするだけです。
追加された 著者 BalestraPatrick,
あなたは私の男です。出来た!ありがとう。
追加された 著者 BalestraPatrick,

正しいプロビジョニングプロファイルの設定で問題を解決できました。

Xcode 6.2 を使用すると、ポータルで開発するための自動設定および追加のPPを使用せずに、チームプロビジョニングを使用して開発/デバッグビルドを実行できました。
Xcode 6.3 では、ポータルで開発するための3つの明示的PP を作成し、プロジェクト設定でそれらを割り当てます。

4
追加された
3、各AppIdに1つ。あるいは実際には6つは開発用、もう1つはアーカイブ用です。リンクされたSOの質問で私の答えを参照してください(またはここ: stackoverflow.com/questions/28816339/…
追加された 著者 dogsgod,
あなたはまた述べたようにあなたのPPを更新しましたか?それでも解決しない場合は、すみませんが、その場合はおそらく別の問題があります。
追加された 著者 dogsgod,
私は3つの異なるアプリIDを作成しました。 2つか3つのプロビジョニングプロファイルを作成する必要がありますか?
追加された 著者 BalestraPatrick,
私の最新の質問を見てください。私はあなたがその質問にすでに答えるのに従ってきましたが、それでも同じ問題です。
追加された 著者 BalestraPatrick,
はい、削除して複数回再作成しました。
追加された 著者 BalestraPatrick,

私もこのエラーと戦ってきました。私にとっては、時にはそれが構築され、時にはそれが構築されません。これが私が現在私のWatchKitアプリをアーカイブすることができる方法です。なぜこれが機能するのかについての知識を主張するのではなく、それが私のために機能するということだけです。

  1. きれいなShift-Command-K
  2. Xcodeを終了
  3. 〜ライブラリ/ Developer/Xcode /派生データ内のファイルを削除する
  4. Xcodeを開いてアーカイブする
4
追加された
私の場合は、Xcodeを再起動するだけで問題が解決します。変です。
追加された 著者 Thomas Kekeisen,
それはいくつかクレイジーブードゥーですが、それは私のために働いた。 Apple Watchは確かに物事を困難にしました。笑
追加された 著者 Mr Rogers,
わかりました、それでそれは私に再び起こりました、そして、私はなぜ私が考え出したと思います。 gitを使って6.3をサポートしていない別のブランチに切り替えたので、6.2を使わなければなりませんでした。私が6.3に戻ったとき、それはまた私に起こりました。
追加された 著者 Mr Rogers,

UPDATE: I've been having this issue on another project and managed to solve it by removing spaces in my WatchKit App and Extension target names. So before my target names were APPNAME WatchKit App and APPNAME WatchKit Extension changing them to APPNAMEWatchKitApp and APPNAMEWatchKitExtension Fixed everything!

ORIGINAL: Just to add my two cents I've been struggling with this issue for a few weeks now. I've narrowed it down to including CocoaPods in the project but without a more descriptive error I've got no idea why.

空白のプロジェクト(WatchKitターゲットを含む)が正常にアーカイブされているので、私のプロビジョニングプロファイルは正しいことを知っています。私のWatchKitエクステンションには静的ライブラリはありませんので、それも問題にはなりません。

結局のところ、確実に機能するのは端末で xcodebuild + xcrun を使用して私のプロジェクトをビルドおよびアーカイブすることだけです。 この記事で説明されています端末でもxcode。

2
追加された

私にとってこれを修正する唯一の方法は、スキーマ名からすべてのスペースを削除し、アプリ名を監視することでした。

スキーマ名を変更するには(例えばschemaは "amazingapp RC")

1)xCodeのスキーマをクリックします(デバイス/シミュレータを選択する場所です)
2)リストから[スキーマの編集]を選択します。
3)新しいモーダルが開いたら、左下隅にある[スキーマの複製]を押します。
4)空白を入れずに適切な名前を選択して保存します。
5)スキームの管理を押して、古いスキームを選択します。
6) " - "ボタンを押して取り外します

今度は拡張名のための時間です:

1)xCodeのスキーマをクリックします(デバイス/シミュレータを選択する場所です)
2)拡張スキーマを選択します。
3)[スキーマの編集]をクリックします。
4)左側のセクションの下部にある[アーカイブ](リリース)を選択します。
5)[アーカイブ名]にスペースを入れずに適切な名前を入力します。
6)閉じます。

Now build->clean, build->archive and you should be good to go.

2
追加された

私は@ dogsgodの提案に従って、私の証明書などをすべて失効させました。ほぼ6時間これを行った後、別のチームメンバーがそれをチェックアウトしてうまくいった(xcodeにそれらの問題を解決させる)。グループがすべてのアプリIDに対して有効になっていることを確認します(私はグループを使用して、ウォッチキットとメインアプリの間でデータを共有しています)。

だから、私はそれが私のxcodeだと思った。

それから私はgitに行き、それをクローンし、そしてそれをうまくコンパイルしました。

多分私のgitignoreの中のすべてが私を妨げているどんなファイルでも取り除いた。それともコミットした後に引っ張ったからか。現時点ではそれはほとんど単なるブードゥーですが、うまくいきました

1
追加された

私の場合は、それが私のXcode設定であることがわかりました。

I had my DerivedData -> Advanced Settings (Build Location) set to "Custom" = "Relative to Workspace".

私はそれをUniqueに変更しました。

うまくいけば、それは誰かに役立ちます。

0
追加された

EDIT: A day later I can share one more thought. While the git cloning works, the problem resurfaces after I make some changes. Which makes me wonder if the problem comes from a bad file formatting (like non unix-like EOF or similar) or just a bug in Xcode. Anyways, my workflow currently is as follows:

1) git clone to another directory
2) archive
3) if there is an error, I need to fix it, 
4) git commit & git push
5) repeat steps 1 & 2 ... 

これは面倒ですが、プロジェクトをアーカイブして実際にApp Storeにアップロードできる唯一の方法です。

ORIGNAL POST: I have encountered this error as well. My project uses CocoaPods, multiple targets and build schemes as well as group entitlements. At times I can't build, although this is fixable (see below) but the problem with archiving persited for a longer time. After two days of fighting with it, my summary is as follows:

I have followed all the responses and I can see that sometimes doing:

1) clean project

2) (optional - not alwys needed) restart Xcode

3) delete derived data folder contents

アプリをコンパイルして実行することを許可します。しかし、私はまだアーカイブすることはできません。時々それは私が二度それをしなければならないようである。

上記とは別に、私は以下の提案を試みた(そしてアーカイブに失敗した)。

  • ターゲット名(およびフォルダを含む)の名前を空白を含まないように変更します。ExchangeおよびWatchAppターゲットでは、それぞれの名前に空白は含まれませんが、プロジェクトはアーカイブされません(変更なし)。
  • 拡張ターゲットに埋め込みバイナリがないことを確認しました(watchAppにはこのオプションはありません)
  • 私は、デプロイメントのターゲット(デフォルトはXcode 6.4のiOS 8.3)を8.2と8.4の両方に変更してみましたが、アーカイブには問題ありませんでした。
  • "adHoc"と "release schemas"の両方のAppIDとすべてのプロビジョニングプロファイルを再作成しました。
  • と、アーカイブしようとしている現在のスキーマに空白が含まれていないことを確認しましたが、それでもまだ何も変更されません。
  • 最後の提案、つまりデフォルトの派生データフォルダの場所を変更することを試みたこともありますが、疑いように、何も変更されていません。

興味深いことに、実際にうまくいったのはMike Manhによる提案です。リポジトリを別のフォルダにチェックアウトする

リポジトリを新しい空のフォルダに複製した後、すべてが突然機能し始めました。これは私の現在のプロジェクトフォルダにいくつかの残りのファイル/壊れたリンク/があるかもしれないという結論に私を導きます。これは、私のwatchKit開発ブランチを現在のマスターブランチにリベースしようとしたときに起きた可能性があると思います。これは私にいくつかのクレイジーな衝突を投げかけ始め、そして私はついにリベースを中止しました。おそらく、アーカイブオプションが正常に機能しなくなった点です。

0
追加された

I had the same problem. In Xcode 6.* I fixed it by cleaning my DerivedData folder. But in new Xcode 7 it didn't help. So I removed spaces in WatchKit Extension and WatchKit App ("planckMailiOS WatchKit App" -> "planckMailiOSWatchKitApp" and "planckMailiOS WatchKit Extension" -> "planckMailiOSWatchKitExtension").

0
追加された