我正在尝试通过xcode发布react native应用。实际代码在设备和模拟器上均能正常工作。我能够毫无问题地构建和归档项目。在“验证应用程序”阶段,事情变得一团糟。(Xcode版本为10,RN版本为55.4)
我的项目中有两个框架,RSKImageCropper和QBImagePicker。我可以在“目标”>“构建阶段”下的““嵌入框架””中看到它们。
当我尝试存档项目时,出现以下错误,存档过程失败。
为了解决这个问题,我看到了一条评论:“在Xcode 10中,脚本将框架复制到正确的位置,您不必将它们添加到 “常规”选项卡。“然后,我从“嵌入式框架”选项卡中将它们删除。当我测试此版本时,它在模拟器上工作正常,但在设备上崩溃。不知道为什么?
删除嵌入框架后继续归档过程时。在验证阶段,我也可以在屏幕截图下方看到框架:
上图中的一些细节会导致下一阶段的错误。这是验证错误的屏幕截图。
为解决此错误,我在构建阶段添加了以下“运行脚本”。
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
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
这是此脚本的reference link。
完成此阶段后,仍然会出现以下错误:
我使用Application Loader来更详细地查看错误,我看到了以下解释:
错误ITMS-90161:“无效的配置文件。捆绑在com.thesomething.something.ios [Payload / thesomething.app]中的配置文件是无效的。[缺少代码签名证书]。分发将应用程序提交到App Store时应使用配置文件。有关更多信息,请访问iOS开发者门户。“
你们认为错误来自框架吗?使用我的团队名称进行签名?