4

フォルダーをApplescriptを使用してグループとしてXcodeプロジェクトに追加し、その下にあるすべてのものを、グループとファイルのリストにドラッグしたかのように再帰的に追加することはできますか?

4

2 に答える 2

2

私はそれを正確には行いませんが、非常に似たようなことをします。ビルド後のコマンドとして次のシェルコマンドを実行します:(読みやすくするためにいくつかの行に分割しました)

/Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp
   -exclude .DS_Store -exclude CVS -exclude .svn -resolve-src-symlinks
   $FOLDER $APP_FOLDER

このコマンドは$FOLDERアプリにコピーされ、Xcodeプロジェクトではなく$APP_FOLDER、 (ビルドされた).appフォルダーの場所です。たとえば、私のコマンドは次のように展開されます

/Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp
   -exclude .DS_Store -exclude CVS -exclude .svn -resolve-src-symlinks
   /Users/beder/src/myproj/data
   /Users/beder/src/myproj/build-iphone/Debug-iphonesimulator/Myproj.app

(私のビルドシステムはCMakeを使用しているため、.appフォルダーは少し型破りな場所にあります。)

最終的な結果として、データフォルダーがフォルダーにコピーされ.appます(予想どおり- ../Myproj.app/data/)。これはXcodeへのコピーをバイパスしますが、フォルダーをXcodeに表示する必要がないことがわかりました。ビルドするたびにフォルダがコピーされるので、フォルダをXcodeにドラッグしたかのようにその中のファイルを使用できます。

明らかにこれはapplescriptではありませんが、applescriptでシェルコマンドを実行できます。

do shell script "whatever"
于 2009-10-21T03:21:29.077 に答える
2

.appバンドルでフラットにするために、lprojディレクトリを除くサブディレクトリ内のすべてのファイルが必要でした。アセットは次の構造になっています。

${assetsDir}/${targetCode}/
    Icon.png
    en.lproj
    ja.lproj
    ...
    *.lproj
    resources{$targetCode/
        Target.plist
        audio/Audio.plist
             *.mp3

「バンドルリソースのコピー」の前に、次のようなスクリプト実行ビルドフェーズを追加しました。

COPY_COMMAND="$DEVELOPER_LIBRARY_DIR/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp"
copyPNGCommand="$PLATFORM_DEVELOPER_LIBRARY_DIR/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/copypng"

lprojDirectories=$( find ${assetsDirectory}/${targetCode} -type d -name *lproj )

for lprojDirectory in $lprojDirectories; do
    "$COPY_COMMAND" -exclude .DS_Store -exclude .svn -resolve-src-symlinks "$lprojDirectory"  "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH"
done

MP3s=$( find ${assetsDirectory}/${targetCode}/resources${targetCode} -type f -name *.mp3 )

for MP3 in $MP3s; do
    filename=$( basename "$PNG" )
    "$COPY_COMMAND" -resolve-src-symlinks "$MP3"  "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH"
done

PNGs=$( find ${assetsDirectory}/${targetCode}/resources${targetCode} -type f -name *.png )

for PNG in $PNGs; do
    if [ -x "$copyPNGCommand" ]; then
        filename=$( basename "$PNG" )
        "$copyPNGCommand" -compress "" "$PNG" "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/$filename"
    else
        "$COPY_COMMAND" -resolve-src-symlinks "$PNG" "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH"
    fi
done

Plists=$( find ${assetsDirectory}/${targetCode}/resources${targetCode} -type f -name '*.plist' )

for Plist in $Plists; do
    "$XCODE_APP_SUPPORT_DIR/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist" --convert binary1 "$Plist" --outdir "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH"
done

注:copypngは、デバイス用にビルドする場合にのみ機能するため、テスト

于 2009-10-23T01:33:36.930 に答える