提示這種錯誤是集成環信造成的,解決方法看環信的官方文檔:
集成動態庫上傳AppStore
由於 iOS 編譯的特殊性,為了方便開發者使用,我們將 i386 x86_64 armv7 arm64 幾個平台都合並到了一起,所以使用動態庫上傳appstore時需要將i386 x86_64兩個平台刪除后,才能正常提交審核
在SDK當前路徑下執行以下命令刪除i386 x86_64兩個平台
bak文件是備份目錄,上傳appstore之后需要替換回bak目錄下的SDK
實時音視頻版本Hyphenate.framework
mkdir ./bak cp -r Hyphenate.framework ./bak lipo Hyphenate.framework/Hyphenate -thin armv7 -output Hyphenate_armv7 lipo Hyphenate.framework/Hyphenate -thin arm64 -output Hyphenate_arm64 lipo -create Hyphenate_armv7 Hyphenate_arm64 -output Hyphenate mv Hyphenate Hyphenate.framework/
不包含實時音視頻版本HyphenateLite.framework
mkdir ./bak cp -r HyphenateLite.framework ./bak lipo HyphenateLite.framework/HyphenateLite -thin armv7 -output HyphenateLite_armv7 lipo HyphenateLite.framework/HyphenateLite -thin arm64 -output HyphenateLite_arm64 lipo -create HyphenateLite_armv7 HyphenateLite_arm64 -output HyphenateLite mv HyphenateLite HyphenateLite.framework/
解決方法二:在上面方法無效的情況下看下面方法
解決辦法就是要這個SDK剔除掉x86_64, i386這兩個架構
解決辦法:TARGETS->Build Phases->點擊加號選擇New Run Script Phase->然后復制粘貼下面代碼
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" # This script loops through the frameworks embedded in the application and # removes unused architectures. find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK do FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" EXTRACTED_ARCHS=() for ARCH in $ARCHS do echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME" lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") done echo "Merging extracted architectures: ${ARCHS}" lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" rm "${EXTRACTED_ARCHS[@]}" echo "Replacing original executable with thinned version" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" done