2013-08-09 2 views
1

Я пытаюсь создать универсальную инфраструктуру для iOS, и у меня есть фаза сборки «Добавить файлы копий» в моей совокупной цели, которая, как правило, ведет себя непредсказуемо (скопируйте некоторые файлы в целевом местоположении), можете ли вы сказать мне, если это можно каким-то образом решить?XCode «Добавить файлы копий файлов» не удается скопировать файлы заголовков при создании универсальной рамки

Я добавил 3 файлов на этом этапе сборки копии ... enter image description here

После того, как сборка будет сделано, это то, что я вижу построить журнал .. enter image description here

Результат не соответствует - иногда все (3) файлы копируются, но чаще всего копируют только несколько файлов в целевое местоположение. Журнал сборки не дает никаких ошибок/предупреждений для этой (копии) фазы.

Скорее всего, это проблема с xcode. Любое обходное решение/идея, чтобы обойти эту проблему, очень ценится, так как мне нужно строить проект несколько раз в день (чтобы сэкономить время).


Обновление/редактирует

Если я не редактировать любого из 3-х файлов заголовки добавленных (+) в «добавить файлы копирование» после последней сборки, то ни один из файлов не копируются в рамочной папке on build (cmd + B).

Ниже приведены сценарии, используемые в целевой сборки phases-

Сценарий 1: Построить статическую LIB

xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 

xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 

Сценарий 2: Построить универсальный рамочный

SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" && 
DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" && 
UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal" && 
UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_DIR}/${PRODUCT_NAME}" && 
FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${PRODUCT_NAME}.framework" && 

# Create framework directory structure. 
rm -rf "${FRAMEWORK}" && 
mkdir -p "${UNIVERSAL_LIBRARY_DIR}" && 
mkdir -p "${FRAMEWORK}/Versions/A/Headers" && 
mkdir -p "${FRAMEWORK}/Versions/A/Resources" && 

# Generate universal binary for the device and simulator. 
lipo "${SIMULATOR_LIBRARY_PATH}" "${DEVICE_LIBRARY_PATH}" -create -output "${UNIVERSAL_LIBRARY_PATH}" && 

# Move files to appropriate locations in framework paths. 
cp "${UNIVERSAL_LIBRARY_PATH}" "${FRAMEWORK}/Versions/A" && 
ln -s "A" "${FRAMEWORK}/Versions/Current" && 
ln -s "Versions/Current/Headers" "${FRAMEWORK}/Headers" && 
ln -s "Versions/Current/Resources" "${FRAMEWORK}/Resources" && 
ln -s "Versions/Current/${PRODUCT_NAME}" "${FRAMEWORK}/${PRODUCT_NAME}" 

Я серьезно необходимо исправить основную реальную проблему, чтобы автоматизировать сборку (избегайте workaroun ds, упомянутых в моем ответе). Спасибо.

ответ

0

Я обнаружил, что одним из способов решения проблемы является - просто откройте и сохраните все файлы, которые вы включили в фазу сборки копии, а затем выполните сборку (Cmd + B). (просто сделайте файл грязным, добавив пробел, чтобы обновленная дата была обновлена)

+0

** Другое обходное решение: ** Построение проекта _twice_ (то есть последовательный Cmd + B) гарантирует, что файлы заголовков, указанные в разделе «Добавить фазу копирования», являются скопирован в абсолютный путь. – Ashok

+0

Это обходное решение для меня не работает с Xcode 8.3.3. –

Смежные вопросы