إضافة إلى الموارد متكرر مشروع Xcode مع ابليسكريبت

StackOverflow https://stackoverflow.com/questions/868184

  •  22-08-2019
  •  | 
  •  

سؤال

هل من الممكن إضافة مجلد إلى مشروع Xcode كمجموعة مع ابليسكريبت، مضيفا متكرر كل شيء أقل من ذلك كما لو تم سحبها إلى قائمة المجموعات والملفات؟

هل كانت مفيدة؟

المحلول 2

وأنا في حاجة كل الملفات في الدلائل، وبصرف النظر عن الدلائل 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 يعمل فقط عند بناء للجهاز، وبالتالي اختبار

نصائح أخرى

وأنا لا تفعل ذلك بالضبط، ولكن أفعل شيئا مماثلا جدا. أركض الأمر قذيفة التالية كأمر بعد بناء: (لقد كسره إلى عدة خطوط لذلك فمن أسهل في القراءة)

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

وهذا الأمر نسخ $FOLDER إلى التطبيق الخاص بك، و$APP_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/). هذا يتجاوز نسخها إلى كسكودي، ولكني وجدت أن لا حاجة لي للمجلد لتظهر في كسكودي. بعد كل بناء، فإنه ينسخ المجلد، حتى أتمكن من استخدام الملفات الموجودة فيه كما لو كنت قد جر المجلد كسكودي.

ومن الواضح أن هذا ليس ابليسكريبت، ولكن يمكنك تنفيذ أمر قذيفة في ابليسكريبت التي كتبها

do shell script "whatever"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top