0

私は Xamarin.iOS でプロジェクトに取り組んでいますが、たまたまビルド サーバー (Mac で実行されている) を経由しています。

ビルドは一般的に失敗するようですが、--verboseまたはを使用しても-vサイレントに失敗するようです。たとえば、現在、iOS 向けにグラフィックを最適化すると失敗するようです。ビルドの最後の行にはBuild complete -- 0 errors, 0 warnings. しかし、その後Build step 'Execute shell' marked build as failure、Jenkins から a を取得します。これが mdtool ビルドの失敗であることはわかっています。以前に成功したビルドがあり、実際に成功するまでにさらにいくつかのステップがあることを知っているからです。

成功したプロセスの次のステップは のはずですCompiling to native codeが、何らかの理由でそこに到達する前、または少なくともコンソールに出力する前に失敗します。

助けてくれてありがとう!

4

1 に答える 1

2

mdtool ビルド ロジックには、Xamarin Studio 4.0.2 用に (できれば) 修正したシェル プログラムの実行時に例外を適切にキャッチしなかった場所がいくつかあります。

完全なビルド ログを見ないと断言はできませんが、実行しようとしているシェル コマンドが存在しないか、実行権限が付与されていない可能性があります。

mdtool が iOS ビルドのために呼び出すプログラムとして、私が頭の中で思いつくのは次のとおりです。

  1. pngcrush(.png ファイルを最適化)
  2. plutil(.plist および .strings ファイルを最適化します)
  3. codesign(ただし、これはネイティブ コードにコンパイルした後に呼び出されます)

もちろん、mtouchこれは IL をネイティブ コードにコンパイルするために使用されます。コマンドは Xamarin.iOSのmtouch一部ですが、他の 3 つのユーティリティは Mac OS X (または Xcode) の一部です。

私が1、2週間前にデバッグを手伝った、同様の問題を抱えている他の人の解決策は、彼がlaunchd/usr/binを含まないようにアプリを起動するPATH環境を変更したため、mdtoolが上記のユーティリティプログラムを見つけることができなかったためです。 .

私は Jenkins にあまり詳しくありません (Xamarin で使用していることは知っていますが、私は Jenkins を使用しているチームの一員ではありません)、mdtool を起動する PATH 環境が /usr/bin を含むようにセットアップされていることを確認してください。 .

それが役立つことを願っています。

于 2013-03-05T14:15:39.430 に答える