Azure移动服务iOS库无法使用发布配置进行构建

时间:2014-02-20 12:23:20

标签: ios azure xcode4 build-process azure-mobile-services

归档我的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"

我看不出ReleaseDebug之间的构建设置存在任何差异。

更新

经过一番调查后,我确定当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>

更新2

将“跳过安装”设置为“否”会导致存档问题,请参阅此问题:Compile, Build or Archive problems with Xcode 4 (and dependencies)

因此,我删除了在构建阶段失败的脚本,并将"${PROJECT_DIR}/../azure-mobile-services/sdk/iOS/src"添加到“用户标题搜索路径”列表中。

这很麻烦,不是我首选的解决方案。

0 个答案:

没有答案
相关问题