Iphone 使用Applescript向Xcode项目递归添加资源

Iphone 使用Applescript向Xcode项目递归添加资源,iphone,xcode,applescript,Iphone,Xcode,Applescript,是否可以使用Applescript将文件夹作为一个组添加到Xcode项目中,递归地将其下的所有内容添加到其中,就像将其拖到“组和文件”列表中一样?我不这么做,但我做了一件非常类似的事情。我将以下shell命令作为编译后命令运行:(我将其分成了几行,以便更容易阅读) 此命令将$FOLDER复制到您的应用程序,并且$app\u FOLDER是(生成的).app文件夹的位置,而不是Xcode项目。例如,我的命令扩展到 /Developer/Library/PrivateFrameworks/DevTo

是否可以使用Applescript将文件夹作为一个组添加到Xcode项目中,递归地将其下的所有内容添加到其中,就像将其拖到“组和文件”列表中一样?

我不这么做,但我做了一件非常类似的事情。我将以下shell命令作为编译后命令运行:(我将其分成了几行,以便更容易阅读)

此命令将
$FOLDER
复制到您的应用程序,并且
$app\u FOLDER
是(生成的)
.app
文件夹的位置,而不是Xcode项目。例如,我的命令扩展到

/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中执行shell命令:

do shell script "whatever"

我需要子目录中的所有文件,除了lproj目录,在.app包中都是扁平的。这些资产属于以下结构:

${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仅在为设备构建时有效,因此测试

谢谢,我认为这可能就是答案。当我有机会测试的时候,我会把它标记为正确的。我会在另一个答案中回答我最终做了什么,但是谢谢,你肯定让我做到了+我只是想把你推过1.5公里
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