我有一个我在Xcode6中继承和管理的框架文件,以及一个使用框架文件的演示应用程序。我通常构建框架项目,将创建的.framework文件复制到所述演示应用程序中,然后编译该演示应用程序。
最近我遇到了一些问题,据说这个框架没有必要的架构,无法构建我的演示应用程序。我一直在尝试使用所有架构来构建SDK,但无论我做什么,演示应用程序都找不到它需要的东西。它以前运行良好,但现在没有。
我该怎么做才能确保使用Xcode中的消费者可能需要的任何arch构建此SDK?
另见下面的更新。看起来运行脚本完成了大部分编译工作,我不确定它是否甚至使用了这些设置?
演示应用内置错误:
missing required architecture x86_64 in file
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_BeaconManager", referenced from:
objc-class-ref in StartViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
SDK上的构建设置。我已经将arch值扩展为尽可能完整,但它没有帮助。在添加所有这些之后,.framework文件从1mb膨胀到8mb。
更新:
有一个构建脚本似乎可以自行编译。我还没有确定这个脚本是否自己确定了架构,或者它是否仍然尊重我试图在Xcode中更新的所有设置。我所学到的是,SDK一旦构建就不能在模拟器中工作,但是当演示应用程序+ SDK放在实际的Iphone设备上时它可以工作。
xcodebuild -configuration ${CONFIGURATION} -target BeaconSDK -sdk iphoneos -SYMROOT=${SYMROOT} -OBJROOT=${OBJROOT}
xcodebuild -configuration ${CONFIGURATION} -target BeaconSDK -sdk iphonesimulator -SYMROOT=${SYMROOT} -OBJROOT=${OBJROOT}
INSTALL_DIR=${SRCROOT}/${TARGET_NAME}
BUILD_DIR=${SRCROOT}/build
DEVICE_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}
SIMULATOR_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}
# Create and renews the final product folder.
rm -rf "${INSTALL_DIR}"
mkdir -p "${INSTALL_DIR}"
mkdir -p "${INSTALL_DIR}/Versions/A/Headers"
xcrun -sdk iphoneos lipo -create ${SIMULATOR_DIR}/BeaconSDK ${DEVICE_DIR}/BeaconSDK -o ${INSTALL_DIR}/Versions/A/BeaconSDK
# Copy the header files to the final product folder.
cp -r "${SIMULATOR_DIR}/Headers/" "${INSTALL_DIR}/Versions/A/Headers/"
mkdir -p "${INSTALL_DIR}/Versions/A/Resources"
cp -r "${DEVICE_DIR}/" "${INSTALL_DIR}/Versions/A/Resources/"
#create relative symbolic link.
cd ${INSTALL_DIR}
#link
ln -s A Versions/Current
ln -s Versions/A/BeaconSDK BeaconSDK
ln -s Versions/A/Resources Resources
ln -s Versions/A/Headers Headers
答案 0 :(得分:0)
您需要使用与项目相同的架构列表重新编译框架。它需要在框架中具有64位切片才能链接到64位应用程序。听起来你只是使用最新的编译器设置重建框架,你应该很高兴。
答案 1 :(得分:0)
经过7个小时的调试后我上床睡觉时完全破了。当我醒来它编译正常没有任何架构错误。这不是XCode第一次无法更新设置,然后数小时或一天后才会考虑更改。我想知道是否存在某种缓存,保留值等。我没有重启甚至一夜之间关闭XCode。