亲爱的小伙伴儿们你们好:node
今天上传ipa到appstore在预审核的时候收到一份邮件,才知道Apple在2020年4月份中止接受使用UIWebView api的APP,因此你们在上传APP的过程当中也许会收到相似内容的邮件,如图:react
这里要着重说一下,已经上线的app虽然会收到这封提示邮件,可是并不影响发版(前提app要审核经过)。若是是第一次上线的话,那影响就大了,直接被拒。因此 仍是要把这个问题完全解决,不能留下技术债。android
咱们的项目是一个React-native 项目,我先把项目的依赖软硬件环境描述一下:ios
react-native:'0.50.0'
node: '10.16.3'
JDK: '1.8.0_73'
MACOS: '10.14.6'
Xcode: '11.3'
androidStudio: '3.5'
vscode: '1.38.0'
全局安装:react-native-cli 、yarn
复制代码
在根目录下 执行grep -r UIWebView . 检测使用 uiwebview 的组件和sdk。web
采用react-native-webview:’8.0.0‘ 来替换代码中Webview组件。react-native
yarn add react-native-webview --save
react-native link react-native-webview
import { WebView } from 'react-native-webview';
复制代码
替换以后,发现项目依赖的sdk,由于版本有些老,依赖的仍是UIWebview。这个时候下载最新的sdk直接替换 就能够了。api
找到项目中node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
一、if (version.indexOf('iOS') !== 0 ) 替换成 if (!version.includes("iOS" ))
二、if(simulator.availability!=='(available)') 替换成 if(simulator.isAvailable!== true)
三、使用 react-native run-ios --simulator="iPhone *" 指定模拟器运行
复制代码
若是不想指定模拟器,能够在Xcode中设置一下,iphone-6版本的模拟器。而后可直接运行react-native run-ios便可。缓存
cd node_modules/react-native/third-party/glog-0.3.4
运行../../scripts/ios-configure-glog.sh
复制代码
这个问题是由 copy 工程 引发的缓存cache冲突markdown
须要把ios/build文件删除 而后从新build
rm -rf ios/build
复制代码
须要把依赖androidx的类,按照下面写法作一下修改:app
import android.support.annotation.RequiresApi;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.FileProvider;
复制代码
在主工程的gradle种添加
defaultConfig {
multiDexEnabled true
}
添加 google()
复制代码
由于每一个工程,所依赖的软硬件环境都不同。若是小伙伴 在按照以上方案操做以后,遇到其余问题,能够留言。咱们一块儿研究分析。