web-dev-qa-db-ja.com

エラー:Xcodeビルドでプロセスを生成できません(引数リストが長すぎます)

このエラーが発生しています:

「エラー:プロセスを生成できません(引数リストが長すぎます)

**アーカイブに失敗しました**

次のビルドコマンドが失敗しました:CompileSwiftSources normal arm64 com.Apple.xcode.tools.Swift.compiler(1失敗)

終了コード= 65 "

私はこのリンクをたどりました: Xcodeエクスポートローカリゼーションはエラー「引数リストが長すぎます」を投げます

この記事では、パス階層を減らすことを示す問題の一時的な解決策を提供します。しかし、これは適切なアプローチではないようです。誰でもこの問題の解決策に別のアプローチを提供できますか?

Screenshot added

6
Falguni

数日前、私は同様の課題に直面しました。詳細を提供し、私の研究をSOコミュニティと共有したい。

まず、このスレッドを見つけて、質問のリンクをたどりました。
そして、はい、そうです、リンクにマークされた答えは正しいのですが、この問題の解決策は私には合いませんでした。

問題

私の場合、プロジェクトのフォルダー階層をより便利で適切なものに変更すると、この問題が発生しました。
@ oOEricオプションは私には向いていませんでした。ルールによると、Xcodeのグループの階層はシステムのフォルダーの階層と一致するはずです。
しかし、すでに約1680 Swiftファイルをコンパイルする必要があります。

問題は、コンパイルされたファイルへのパスが長すぎ、その数が大きすぎることでした。

研究

その後、調査を開始し、同じバグを持つSwift jiraを見つけました。ここにいくつかのリンクがあります。

  1. メイン
  2. リンクされた問題1
  3. リンクされた問題2
  4. リンクされた問題
  5. オープンレーダーのバグ

しかし、ここでは解決策が見つかりませんでした。

とりわけ、私はSwift開発者のこの応答に満足していました。

繰り返しますが、これはXcode側の問題であり、Swift側の問題ではありません。ここでコメントしても、Xcodeエンジニアの作業は速くなりません! (私たちはAppleの全員と同じではありません。)

オーケー、この回答の後、Xcodeのバグであれば、Xcodeで解決策を模索する必要があると確信しました。

ソリューション

  1. 一時的な解決策

システムの階層内でプロジェクトを上位に移動する必要があります。

私はこれを選択します。なぜなら、私には本当に大きなプロジェクトがあり、他のソリューションを使用するには1日以上かかるからです。

私の場合、実験を行って、プロジェクトへのパスの長さは50文字以内である必要があると計算しました。

しかし、これは一時的な解決策です。プロジェクトがさらに大きくなる場合は、パスを短くするか、他のソリューションを使用する必要があります。

  1. Cocoa Touch Frameworkターゲット

このソリューションは、依存関係を使用しないファイルに適しています。

まず、メインプロジェクトのターゲットとしてCocoa Touch Frameworkを追加する必要があります。

enter image description here

このターゲットは、Embedded BinariesおよびLinked Framework and Librariesに自動的に追加される必要があります。

この後、依存関係のないファイルを見つけて、ターゲットメンバーシップを「TestTarget」に変更する必要があります。

enter image description here

忘れないでくださいcocoa touchフレームワークのクラス、プロパティ、メソッド、列挙、プロトコルには、オープンアクセスまたはパブリックアクセスが必要です。

そして、DerivedDataフォルダーを消去することを忘れないでください。

  1. モジュラーiOS

このソリューションには、より統合されたアプローチがあります。

Cocoa Touchフレームワークで依存関係を使用する場合は、このガイドにアクセスして、大規模プロジェクトのより複雑なリファクタリングを行ってください!

ソリューションへのリンク

これが最善の解決策だと思います。

この大きな答えが誰かを助けることを願っています!

7
Vlad Krupenko

Xcodeのグループの階層を減らすことでこれを解決しました。

例えばproject_name/project_name/About/Model/Textにある元のファイル「Model」、「Text」グループを削除し、project_name/project_name/About /の下にファイルを移動しました

2
oOEric

エラー-プロセスを起動できません(引数リストが長すぎます)

このエラーには多くの理由があります。これらのいくつかを以下に示します。

  • プロジェクトには多くSwiftファイル(たとえば2000以上))
  • ほとんどのSwiftソースファイルはディレクトリ内に深くネストされています

Screenshot for deeply nested folder structure

  • これらのファイルの多くには、150文字を超える絶対パス(例:/ MacintoshHD⁩/⁨Users⁩/jayprakashnd⁩/⁨mySampleProject/ Module1…)

Screenshot for absolute path

Xcode Swift complierはコンパイル中にすべてのソースファイルの絶対パスを取得するため、ARG_MXの制限に達し、ビルドは失敗します。

これはXcode 11で修正されており、フラグを使用してSwiftファイルの数に制限はありません。

ソリューション:

  1. Xcode 11に切り替えてSE_Swift_RESPONSE_FILE[〜#〜] yes [〜#〜] in ビルド設定-ユーザー定義セクション

  2. Xcode 11に切り替えられない場合は、最小のフォルダー名可能な限り。

解決策2は私にとって魅力的でした!

1

ビルドシステムをファイルでLegacy build systemに設定することでこれを解決しました->ワークスペース設定->ワークスペース設定の選択

1
user3257307

この問題を一時的に修正するための簡単なスクリプトを作成しました。 https://github.com/gregoryvit/flatter

Xcodeプロジェクト内のすべてのSwiftファイルをルートグループに移動するだけです。

ビルドタイプをレガシーに変更し、ローカルおよびCIビルダーの両方で問題を解決しました。私にとっては、Podfile.lockとManifest.lockのチェック中に発生しました。私たちは常にCIにポッドをインストールしているので、おそらくこれはパイプラインでスキップできます。

0
lisek

xcode11

-ビルド設定

-ユーザー定義の

-設定の追加:USE_Swift_RESPONSE_FILE

-setValue:はい

これにより、xcodeで許可されているよりも多くのファイルを使用できるようになります。しかし、これが常に問題を解決するかどうかはわかりません。

0
Pedro Menezes

Live Previewを使用してXcode 11ベータ版を使用したとき、それは私に起こりました。次に、そのエラーがなくなった後にXcodeを再起動して解決しました。

0
atalayasa

この問題を修正し、マイXcodeプロジェクトのフォルダーをMacルートに移動し、名前のフォルダーを以下の文字に変更しました。

  1. ターミナル:cd /

  2. 名前フォルダーをBXに変更します(例)。

0
A. Trejo