XCodeで簡単なナビゲーションベースのiPhoneアプリを作成しました。アプリはXCodeの下から適切にビルドおよび実行されますが、コマンドラインからビルドできません。
端末から私は実行します:
xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build
しかし、私はそのエラーを受け取ります:
=== BUILD NATIVE TARGET George OF PROJECT George WITH CONFIGURATION Debug ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain
** BUILD FAILED **
The following build commands failed:
Check dependencies
(1 failure)
処理方法に問題はありますか?
キーチェーンのロックを解除するだけでなく、コードサインIDを指定する(またはターゲットに設定する)こともできます。開発証明書は「iPhone Developer:Company Inc」の形式をとっており、配布証明書はこの「iPhone Distribution:Company Inc」のようなものです。
xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build CODE_SIGN_IDENTITY='iPhone Developer: Company Inc'
コマンドラインから、署名なしでシミュレータをターゲットにしたビルドをビルドできます。
これは私のために署名の問題を解決しました:
xcodebuild -sdk iphonesimulator
ソース: xcodebuildコード署名エラー:一致するコード署名IDが見つかりません:
これは、コマンドラインビルドが継続的インテグレーションセットアップでソースコードのサニティチェックのみを行う場合に特に役立ちます。
ほとんどの場合、キーチェーンがロックされています。スクリプトを実行する前にロックを解除してみてください。コマンドラインから実行できます(ビルドの直前)。
security unlock -p YourPasswordToKeychain ~/Library/Keychains/login.keychain
注:私は「ログイン」キーチェーンを使用しています。
また、それでも問題が解決しない場合は、他のすべてのパラメーターを削除してみてください。
xcodebuild -configuration Debug
および事前にクリーンアップxcodebuild -configuration Debug clean
私は深センを使用していますが、このエラーも表示されます。
結局のところ、iPadを接続したときに発生しますが、プロビジョニングプロファイルにはありません。 --verbose
深センへ。それが示している:
Check dependencies
Code Sign error: No matching provisioning profiles found: None of the valid provisioning profiles include the devices:
XXXX’s iPad
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.3'
デバイスのプラグを抜くと、すべてがうまくいきます...
元の投稿と似ていますがまったく同じではないアーカイブエラーがありました。
** ARCHIVE FAILED **
The following build commands failed:
Check dependencies
(1 failure)
これは、不足しているアプリケーションサービス(私の場合、HealthKitサービス/資格)であることがわかりました。これは、開発用アプリIDで有効にしましたが、本番用アプリIDでは有効にしませんでした。
Apple Member Center: https://developer.Apple.com/account/ios/identifiers/bundle/bundleList.action でサービスを有効にします
スクリプトの目的によっては、スクリプトのコード署名をオフにするだけで十分な場合もあります。これは、CODE_SIGN_IDENTITY = ''を設定することで実行できます。
xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build CODE_SIGN_IDENTITY=''
スクリプトから最終的なビルドを行おうとする場合は明らかにそれは良くありませんが、継続的インテグレーション(Jenkinsからなど)のテストビルドを実行するだけで問題ない場合もあります。 。
これは、XCodeで「iOSディストリビューション」から「iOS開発」に変更することで、XCode 8.0で修正できます。うまくいくようには見えませんが、何らかの理由でうまくいきます。