親愛的小夥伴兒們你們好: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()
複製代碼
由於每一個工程,所依賴的軟硬件環境都不同。若是小夥伴 在按照以上方案操做以後,遇到其餘問題,能夠留言。咱們一塊兒研究分析。