【问题标题】:Xcode "Add Copy Files" build phase fails to copy header files when building universal frameworkXcode“添加复制文件”构建阶段在构建通用框架时无法复制头文件
【发布时间】:2013-08-11 18:08:49
【问题描述】:

我正在尝试为 iOS 创建一个通用框架,并且我的聚合目标中有“添加复制文件”构建阶段,它往往表现出意外(在目标位置复制一些文件),你能告诉我这是否有办法解决吗?

我在这个副本构建阶段添加了 3 个文件...

构建完成后,这是我看到的构建日志..

结果不一致 - 有时所有 (3) 个文件都被复制,但大多数时候它只将少数文件复制到目标位置。构建日志不会为此(复制)阶段提供任何错误/警告。

这很可能是 Xcode 的问题。非常感谢任何解决此问题的解决方法/想法,因为我需要在一天内多次构建项目(以节省时间)。


更新/编辑

如果我在最后一次构建后没有编辑在“添加复制文件”中添加的 3 个头文件 (+) 中的任何一个,则在构建 (cmd+B) 时不会将任何文件复制到框架文件夹中。

以下是目标构建阶段中使用的脚本-

脚本 1:构建静态库

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}"

我非常需要解决潜在的实际问题以自动化构建(避免在我的回答中提到的变通办法)。谢谢。

【问题讨论】:

    标签: ios xcode macos build-automation universal


    【解决方案1】:

    我发现其中一种解决方法是 - 只需打开并保存您在复制构建阶段包含的所有文件,然后构建 (Cmd+B)。 (只需通过添加空格使文件变脏,以便更新修改日期)

    【讨论】:

    • 另一种解决方法: 构建项目两次(即连续 Cmd+B)确保将“添加复制阶段”中指定的头文件复制到绝对路径。
    • 此解决方法不适用于 Xcode 8.3.3。
    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2011-05-20
    • 2020-01-14
    相关资源
    最近更新 更多