2015-09-10 26 views
2

我们创建了一个框架并将其集成到我的一个应用中。我能够使用此框架运行和调试应用程序,但在提交到应用商店时我收到了以下错误。iOS:通用框架在提交到应用商店时造成问题

请注意,我使用的是xcode 6.3。

错误:'不支持的体系结构',XYZ的可执行文件包含不受支持的体系结构'[x86_64,i386]'。

我曾在设置中添加以下脚本框架代码,同时创建
框架(静态库),使它具有普遍性。

**Options** 


REVEAL_ARCHIVE_IN_FINDER=true 

FRAMEWORK_NAME="${PROJECT_NAME}" 

SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework" 

DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework" 



UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal" 

FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework" 


`Build Frameworks` 

    xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator | echo 

xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos | echo 

#xcodebuild -target ${PROJECT_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" | echo 

#xcodebuild -target ${PROJECT_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" | echo 



Create directory for universal 


rm -rf "${UNIVERSAL_LIBRARY_DIR}" 

mkdir "${UNIVERSAL_LIBRARY_DIR}" 

mkdir "${FRAMEWORK}" 



Copy files Framework 


cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}" 



Make fat universal binary 


lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}"  "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output  "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo 



On Release, copy the result to desktop folder 


if [ "${CONFIGURATION}" == "Release" ]; then 
mkdir "${HOME}/Desktop/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/" 
cp -r "${FRAMEWORK}" "${HOME}/Desktop/${FRAMEWORK_NAME}-${CONFIGURATION}- iphoneuniversal/" 
fi 



If needed, open the Framework folder 


if [ ${REVEAL_ARCHIVE_IN_FINDER} = true ]; then 
if [ "${CONFIGURATION}" == "Release" ]; then 
open "${HOME}/Desktop/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/" 
else 
open "${UNIVERSAL_LIBRARY_DIR}/" 
fi 
fi 

谁能帮我创建框架,我可以调试(装置运行模拟器),运行(在设备),并且还提交的appstore。

预先感谢。

回答

1

您不能将应用程序上传到AppStore时使用通用胖二进制文件。如果你想用你的框架上传,只为设备构建它。

+0

如果我想发布与其他设备,应用商店和模拟器一样的通用框架,该怎么办? –

+0

通用框架从未与应该提交给AppStore的应用程序捆绑在一起。你可以尝试在脚本里面使用'lipo -remove arch_type'来准备上传到AppStore的应用程序以去除模拟器的二进制片(Apple只是不会将带有冗余体系结构片的二进制文件传递到AppStore) –

+0

那么框架如何像Parse .framework成功构建它可以在任何地方工作? –

0

您仍然可以使用您的通用框架,但必须去除不需要的体系结构。我还没有尝试过,但是,我在这里找到了解决不想要的建筑物上的解决方案的相同问题的示例。 here