15

Apple Developer ID 証明書を使用して App Bundle に署名しています。ビルドは自動化されており、ツールチェーンから実行されるため、コマンド ライン ツールを使用して署名する必要があります。次のコマンドで 90% の確率で問題なく動作します。

ws5:bin nick$ codesign -fs "Developer ID Application: <my name here>" MyApp.app
ws5:bin nick$ spctl --assess MyApp.app
ws5:bin nick$ 

注: MyApp.app は実際のアプリケーション名で<my name here>はなく、実際の値でもありません。

したがって、おそらく 10 回に 1 回、断続的に次のエラーで失敗します。

MyApp.app: The timestamp service is not available.

私は、.app が検疫メカニズムを通過することを確認しました。spctl --assessそれを圧縮して署名済みファイルをダウンロードすることにより、. codesignApple が開発者 ID 証明書に使用することを「公式に」推奨していないことは知っていますが ( WWDC ビデオによると)、自動化のために使用する必要があり、私たちのアプリは gcc と Qt ビルド出力の奇妙な組み合わせであるためです。

このエラーを回避する最善の戦略は、再び機能するまで再試行することですか? 私ができることはそれだけです。

4

6 に答える 6

7

この問題は、ネットワーク/ファイアウォールの問題から発生しているようです。VPNを使用して制限の少ないネットワークにアクセスする前に、このエラーが常に発生していました。このコード署名ツールがどのサーバーにアクセスしようとしているのだろうか。

回避策は、フラグを追加することのよう--timestamp=noneです(XCodeを使用している場合は「その他のコード署名フラグ」に)。

于 2013-01-20T00:12:51.950 に答える
4

これは Apple rdar://11785270 によって追跡されています。私にとって有効な回避策は、すべてのビルドの前にプロジェクトをクリーンに実行することです。

于 2012-11-22T14:52:17.350 に答える
4

これはあなたがサインしている方法とは何の関係もないと思います。今日の午後、Xcode で何度もプロジェクトをビルドしましたが、そのような問題はありませんでした。しかし、今晩、インターネットにアクセスできないバスに乗っているときに、ビルドを 3 回試みましたが、毎回同じエラーが発生しました。それで、MacBook Air を閉じて、二人で昼寝をしました。私が家に着いたとき、無線インターネットが再びオンになっていて、私は再び構築することができました.

そのため、明らかに、Xcode はコード署名しないため、インターネット上のタイムサーバーなどに到達できない限り、コード署名されたアプリのビルドに失敗します。エラーメッセージがこれを説明していないのは非常に面倒です! あなたのインターネットアクセスは断続的ですか?

明らかに、コード署名のビルド フェーズを削除するというブルート フォースの回避策により、おそらく修正されるでしょう。また、より簡単な回避策も見つけましたが、出荷用にビルドする前に、忘れずにそのタイムスタンプ スイッチをオンに戻すようにリマインダーを設定しました。そうしないと、タイムスタンプのない製品が Mac App Store のレビューまたは Gatekeeper で不合格になる可能性があると思います。

于 2012-08-25T07:05:43.147 に答える
0

コード署名を試みるたびに、time.apple.com サーバーとやり取りします。Apple Time サーバーに関連する問題が見つかり、コード署名が失敗することがあります。

この問題に直面したときにできる 2 つのこと -

  1. ping time.apple.com

これにより、タイム サーバーが問題なく正常に動作していることを確認できます。

  1. 上記の手順が機能しない場合、最後のオプションはマシンを再起動することです。

これは節約のステップであり、ローカルの Apple Time クライアントを再起動するため、常に機能します。

システムを再起動したくない場合は、ローカルの Apple Time クライアントを再起動する方法を見つけることができます。また

  1. 1 つの端末で - 実行ping time.apple.comし、2 番目の端末タブで codesign コマンドを実行します。時々、これは常に機能します。security unlock-keychain login.keychainまた、コード署名コマンドの前に実行することを忘れないでください。
于 2022-02-07T05:15:52.863 に答える
-3

プロジェクトをクリーンアップし、アクティブなインターネット接続があることを確認してください。これは少なくとも私を助けました。

于 2013-10-06T10:03:36.507 に答える