Скопировать файлы в пакет в зависимости от активной конфигурации
Можно ли контролировать, какие файлы копируются в комплект в зависимости от активной конфигурации? Я не хочу добавлять другую цель для этого, так что это не вариант.
Примером из реальной жизни является видео-заставка, которая на самом деле имеет размер 8 Мб и длинная. Каждый запуск приложения показывает это видео, которое раздражает. Я не хочу разбивать слишком много кода, поэтому решение - это очень короткое заставочное видео, которое является кандидатом для копирования в пакет, когда активна конфигурация отладки.
Да, я мог бы сделать видео отладки очень маленьким, чтобы не повредить его, если оно поставляется вместе с выпуском, но для изучения новых вещей мне нужен способ контролировать, какой файл копируется в зависимости от конфигурации. Я предполагаю, что Run Script сделает это, но, возможно, есть простое решение, которого я не вижу.
Заранее спасибо!
Ответы
Ответ 1
Я не нашел лучшего решения, чем использование Run Script. Лучше всего скопировать файл в каталог ресурсов приложения, если выбрана конфигурация отладки.
Я решил свою проблему с помощью этого сценария запуска:
RESOURCE_PATH=$SRCROOT/ResourcesCopiedByRunScript
FILENAME_IN_BUNDLE=splashVideo.mp4
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}
if [ "$CONFIGURATION" == "Debug" ]; then
cp "$RESOURCE_PATH/shortDebugSplashVideo.mp4" "$BUILD_APP_DIR/$FILENAME_IN_BUNDLE"
else
cp "$RESOURCE_PATH/productionSplashVideo.mp4" "$BUILD_APP_DIR/$FILENAME_IN_BUNDLE"
fi
Ответ 2
Если вы можете дать двум различным файлам одинаковое имя, вы можете поместить их в папки продуктов для сборки для соответствующей конфигурации. Затем добавьте один из них в проект и сделайте его ссылкой относительно продукта сборки.
Если вы хотите, чтобы файлы находились в другом месте, вы можете поместить символические ссылки в папки продуктов сборки. Но я не уверен, что это сработает, если файлы имеют разные имена, но символические ссылки имеют одинаковое имя.
Я сделал этот трюк в проектах Mac, я предполагаю, что он будет работать и для iOS.
Изменить: вот пример того, что я сделал: я хочу, чтобы сборка отладки моего приложения связывалась с сборкой отладки определенной библиотеки, и я хочу, чтобы релиз-сборка приложения связывалась с сборкой релизов библиотека. Поэтому я поместил библиотеку отладки (или символическую ссылку на нее) в подпапку Debug из папки создания приложения, и я поместил библиотеку выпусков в подпапку Release из папки создания приложения. Затем, когда я добавляю библиотеку в проект, я указываю, что ссылка "относительно продукта сборки".
Ответ 3
Лучший способ сделать это с помощью параметра " Исключить имена исходных файлов" в настройках сборки, как показано на рисунке.
![enter image description here]()
Ответ 4
Вы можете заменить один файл другим с помощью скрипта запуска перед этапом компиляции.
RESOURCE_PATH=$SRCROOT/SampleProject/SupportingFiles/
LICENSE=license.txt
LICENSE_PROD=license_prod.txt
if [ "$CONFIGURATION" == "Release" ]; then
cp $RESOURCE_PATH/$LICENSE_PROD $RESOURCE_PATH/$LICENSE
fi