Nano Hash - криптовалюты, майнинг, программирование

Скопируйте файлы в пакет в зависимости от активной конфигурации

можно ли контролировать какие файлы копируются в бандл в зависимости от активной конфигурации? Я не хочу добавлять еще одну цель для этого, так что это не вариант.

Примером из реальной жизни является заставка, которая на самом деле имеет размер 8 МБ и является длинной. При каждом запуске приложения показывает это видео, которое раздражает. Я не хочу ломать слишком много кода, поэтому решением является очень короткая заставка, которая является кандидатом на копирование в пакет, когда активна конфигурация отладки.

Да, я мог бы сделать отладочное видео очень маленьким, чтобы не помешало, если оно будет поставляться с релизом, но ради изучения новых вещей мне нужен способ контролировать, какой файл копируется в зависимости от конфигурации. Я предполагаю, что это сделает Run Script, но, возможно, есть простое решение, которого я не вижу.

Заранее спасибо!


  • Хороший вопрос, и если бы меня спросили, я бы сказал нет. Я просто делаю это для клиента, и я хотел бы защитить свое здравомыслие от этого видео, поэтому у меня нет реального выбора :) 25.03.2011
  • Я понимаю вашу точку зрения, и это хороший вопрос, чтобы выяснить. Это должно значительно сократить время сборки после очистки цели. 28.03.2011

Ответы:


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
24.04.2011
  • Помещает ли это файл в место «Копировать ресурсы пакета» в разделе «Фазы сборки»? Я пробую это и не вижу, чтобы мой тестовый файл отображался там. 25.04.2014
  • Прошло некоторое время с тех пор, как я ответил себе, но я предполагаю, что файл не помещается в этот конкретный список. Он скопирует файл непосредственно в пакет. Лучше всего изучать на симуляторе. 30.04.2014
  • Правильно. Я заметил, что файлы действительно включены в пакет, но не отображаются в разделе «Копировать ресурсы пакета» в разделе «Фазы сборки». Однако спасибо за решение! 01.05.2014
  • Мои пути содержали пробелы, которые заставляли cp задыхаться. Отредактировал код с исправлением. 04.10.2019

  • 2

    Лучший способ сделать это с помощью Исключить имена исходных файлов в разделе Настройки сборки, как показано на рисунке.

    введите описание изображения здесь

    07.11.2018
  • Нет необходимости в сценариях, этапе сборки, опции Xcode по умолчанию. 10.12.2019
  • Отлично, это было самое простое решение. Нет необходимости в сценарии. 05.06.2020

  • 3

    Если вы можете дать двум разным файлам одно и то же имя, вы можете поместить их в папки продуктов сборки для соответствующей конфигурации. Затем добавьте один из них в проект и сделайте его ссылкой на продукт сборки.

    Если вы хотите, чтобы файлы находились в другом месте, вы можете поместить символические ссылки в папки продуктов сборки. Но я не уверен, что это сработает, если файлы имеют разные имена, но символические ссылки имеют одно и то же имя.

    Я проделал этот трюк с проектами Mac, я предполагаю, что он сработает и для iOS.

    Изменить: вот пример того, что я сделал: я хочу, чтобы сборка отладки моего приложения была связана с сборкой отладки определенной библиотеки, и я хочу, чтобы сборка выпуска приложения была связана с сборкой выпуска библиотеки. Поэтому я помещаю отладочную библиотеку (или символическую ссылку на нее) в подпапку Debug папки сборки приложения, а библиотеку выпуска — в подпапку Release папки сборки приложения. Затем, когда я добавляю библиотеку в проект, я указываю, что ссылка является «относительной сборки продукта».

    29.03.2011
  • Я немного не уверен, как сделать то, что вы предложили. Можете ли вы привести какой-то пример? 02.04.2011
  • Что происходит, когда вы чистите свою сборку? 25.06.2013
  • @Justin: Хорошо, что символические ссылки стираются ... на самом деле, у меня есть фаза сборки скрипта, которая создает символические ссылки. 25.06.2013

  • 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
    
    03.11.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..