我们项目内用到了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节】 剔除;后来直接指令剔除,然后就出现了上面现象,具体原因还未知;