2

Xcode プロジェクトから特定のファイルを削除する Ruby スクリプトを作成しようとしています。絶対パスに基づいてファイルを検索し、のremove_from_project方法を使用してプロジェクトから削除できますPBXFileReference。ただし、これにより、ソース ファイル (.mまたは.swiftファイルなど) がメンバーであるターゲットの "ソースのコンパイル" ビルド フェーズに残りますが、名前はありません。

ここに画像の説明を入力

PBXFileReferenceターゲットからファイルも削除する必要があることはわかっていますが、aとターゲット ( ) の間に簡単なリンクがないようPBXNativeTargetです。

私が理解できることから、プロジェクトの各ターゲットを反復処理してから、そのターゲットのfilesまたはを反復処理して、既に持っている を探します。files_referencessource_build_phasePBXFileReference

これは正しいですか、それとも明らかなリンクがありfile_ref.target_membershipsませんか?

4

2 に答える 2

0
if (object.is_a?(Xcodeproj::Project::Object::PBXFileReference))
    if (!object.real_path.exist?)
        object.remove_from_project
    end
end

project.save(project_path)
于 2017-01-07T17:56:28.297 に答える
0

これがいつ導入されたかは不明ですが、xcodeprojバージョン 1.15.0 の時点で、ファイル参照に関連付けられたビルド ファイルを取得できます。

file_ref.build_files

ドキュメントから:

メソッド: Xcodeproj::Project::Object::PBXFileReference#build_files

#build_files ⇒ Array<PBXBuildFile>

現在のファイル参照に関連付けられているビルド ファイルを返します。

戻り値: (Array<PBXBuildFile>)— 現在のファイル参照に関連付けられているビルド ファイル。

これでうまくいくようです:

file_ref.build_files.each { |file| file.remove_from_project }
于 2020-03-15T14:44:33.963 に答える