记录一下如何解决react-native项目中遇到的上述标题的问题
问题描述
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.大概知道是UIWebView不能用了。
这个问题是在xcode打包完,上传成功,但是App Store Connect里面的项目的构建版本没有的问题,就是appstore的吃包问题。因为每次打包上传需要花费很长的时间,所以记录一下,以后大家遇到就懂我的崩溃了。
网上的解决方法:
就是把:RCTWebView.m",RCTWebView.h",RCTWebViewManager.m",RCTWebViewManager.h"这四个文件删除了,我试过了,如果在Xcode里面删除的话,项目都没法运行,所以直接删了是不得行的,但是这个思路是对的,所以可以根据这个思路冲一波。
我的解决方法:
在项目的根目录新建文件removeWebView.sh文件,如图
文件内容:
#!/bin/bash
BASE_DIR=`pwd`;
function remove_rctwebview(){
local dir="${BASE_DIR}/node_modules/react-native/React";
sed -i'.bak' '/RCTWebView/d' "${dir}/React.xcodeproj/project.pbxproj"
rm -f "${dir}/React.xcodeproj/project.pbxproj.bak"
rm -f "${dir}/Views/RCTWebView.m"
rm -f "${dir}/Views/RCTWebView.h"
rm -f "${dir}/Views/RCTWebViewManager.m"
rm -f "${dir}/Views/RCTWebViewManager.h"
}
remove_rctwebview;
然后在编译器终端执行命令:./removeWebView.sh,这个好像是sh文件的执行方式,具体我也不太懂,执行完以后,执行命令:grep -r UIWebView .(注意这里空格一个点);然后就能看见含有UIWebView的文件,检查一下含有UIWebView的都在注释里面就没事,如果是插件的依赖里面还有UIWebView的话,建议升级插件。
最后,这些都搞好了的话,建议先跑一下项目,能跑起来的话,直接打包应该没啥问题。小伙伴如果有问题,一起交流一波。