我正在尝试为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}"
我非常需要修复潜在的实际问题以自动构建(避免在我的回答中提到的解决方法)。谢谢。
答案 0 :(得分:0)
我发现其中一个解决方法是 - 只需打开并保存您在复制构建阶段中包含的所有文件,然后构建(Cmd + B)。 (只需通过添加空格使文件变脏,以便更新修改日期)