归档我的iOS应用程序时,无法构建Windows Azure移动服务库。
使用调试配置时,应用程序构建正常。
运行此脚本时:
/bin/sh -c \"/Users/user/Library/Developer/Xcode/DerivedData/myapp-bxucrfbhixkrpqfwaaovtqqpsvyd/Build/Intermediates/ArchiveIntermediates/MyApp\ (testing)/IntermediateBuildFilesPath/WindowsAzureMobileServices.build/Release-iphoneos/WindowsAzureMobileServices.build/Script-E8E37A27161FAA9600C13F00.sh\"
原来,这个脚本构成了“Build Phases”选项卡:
# Exit immediately on any errors
set -e
# Set some variables
OUTPUT=${BUILT_PRODUCTS_DIR}
WAMS="WindowsAzureMobileServices"
WAMS_FRAMEWORK="${WAMS}.framework"
WAMS_LIB="lib${WAMS}.a"
HEADERS="Headers"
# Create the needed directories for the framework
mkdir -p "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A"
mkdir -p "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A/Headers"
# Add the headers and lib to the framework
cp -a "${OUTPUT}/${HEADERS}/" "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A/Headers"
lipo -create "${OUTPUT}/${WAMS_LIB}" -output "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A/${WAMS}"
# Set up the links to complete the framework
ln -sf Versions/Current/Headers "${OUTPUT}/${WAMS_FRAMEWORK}/Headers"
ln -sf "Versions/Current/${WAMS}" "${OUTPUT}/${WAMS_FRAMEWORK}/${WAMS}"
ln -sf A "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/Current"
失败并出现此错误:
CP: /用户/用户/库/开发商/ Xcode中/ DerivedData / MyApp的-bxucrfbhixkrpqfwaaovtqqpsvyd /编译/中间体/ ArchiveIntermediates / MyApp的 (测试)/ BuildProductsPath / Release-iphoneos / Headers /:没有这样的文件或 目录
我假设错误对应于这一行:
cp -a "${OUTPUT}/${HEADERS}/" "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A/Headers"
我看不出Release
和Debug
之间的构建设置存在任何差异。
经过一番调查后,我确定当Xcode存档产品时,它不会在${BUILT_PRODUCTS_DIR}
中创建“headers”文件夹。它将它们放在`/ Build / Intermediates / ArchiveIntermediates / UninstalledProducts'中。所以脚本失败了。
为Release版本设置“Skip Install”到NO
,然后检查脚本中是否存在${INSTALL_DIR}
将成功构建库。
if [ -d "${INSTALL_DIR}" ]; then
cp -a "${INSTALL_DIR}/" "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A/Headers"
else
cp -a "${OUTPUT}/${HEADERS}/" "${OUTPUT}/${WAMS_FRAMEWORK}/Versions/A/Headers"
fi
但是,Xcode无法构建,因为找不到标题:
fatal error: 'WindowsAzureMobileServices/WindowsAzureMobileServices.h' file not found
#import <WindowsAzureMobileServices/WindowsAzureMobileServices.h>
将“跳过安装”设置为“否”会导致存档问题,请参阅此问题:Compile, Build or Archive problems with Xcode 4 (and dependencies)
因此,我删除了在构建阶段失败的脚本,并将"${PROJECT_DIR}/../azure-mobile-services/sdk/iOS/src"
添加到“用户标题搜索路径”列表中。
这很麻烦,不是我首选的解决方案。