我們項目內用到了WebRTC做即時通訊,今天打包上傳App Store Connnect發現一直被拒,提示我們是用到的WebRTC涉及私有API訪問;
如下圖:
這搞得我有點頭大,因爲
1、我們的這個版本的WebRTC在AppStore已經上傳過一個版本了;
2、我們的客戶也用我們的庫上架了;
讓我一度懷疑是蘋果的審覈政策又改了;
後來經過排查發現問題如下,比較坑,特記錄在此;
1、AppStore目前只支持真機SDK上傳
我們的是包含模擬器的
2、將模擬器版本剔除方式
2.1、 指令剔除
剔除指令如下:
lipo -remove x86_64 WebRTC -o WebRTC
2.2、 項目內腳本剔除
剔除腳本如下:
#!/bin/sh
# RScript.sh
# HDSFM
#
# Created by Chenfy on 2019/11/28.
# Copyright © 2019 Chenfy. All rights reserved.
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
3、問題所在
出現問題的地方就是對模擬器的剔除方式不同導致的;
之前都是腳本 【2.2節】 剔除;後來直接指令剔除,然後就出現了上面現象,具體原因還未知;