1 ?java.lang.RuntimeException: Error calling AppRegistry.runApplication

解決:關(guān)閉node服務(wù)端,重新運(yùn)行項目react-native run-android
分析: 從日志最后一行Could not get BatcheBridge,make sure your bundle is packaged correctly可知,是bundle未正常加載,這種情況一般是node服務(wù)未啟動,或者客戶端的網(wǎng)絡(luò)環(huán)境訪問不到node服務(wù)端。
2?npm ERR! errno -4048

解決:
方法一:1)以管理員權(quán)限運(yùn)行 npm install
方法二:1)清空緩存:npm cache clean --force
? ? ? ? ? ? ? ?2)npm install
3 ?If you want to render content on top of the image, consider using aboslute positioning

報錯代碼:

修改后

4?java.lang.NoSuchFieldError: No instance field forceOldAnimationCode of type Z in class ...

解決:升級gif 加載庫版本到1.0.1(React Native官網(wǎng)所指示的最新版本)

分析:React-Native 版本升級導(dǎo)致。參照?React-Native?官網(wǎng)文檔,升級?com.facebook.fresco:animated-gif 到最新注意:是?React-Native官網(wǎng)所使用的最新版本,而不是git上?fresco的最新版本。
5 使用webview加載html亂碼問題
之前:

之后:

6?百度地圖無法定位 :galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy
分析:百度地圖注冊簽名中使用的Sha1值與打包使用的Sha1值不一致導(dǎo)致
解決:在build.gradle中配置正確的簽名

查看本機(jī)android默認(rèn)簽名秘鑰信息
?1)進(jìn)入目錄: C:\Users\用戶名\.android
?2)查看默認(rèn)簽名信息:打開cmd窗口,運(yùn)行命令,keytool -list -v -keystore debug.keystore
7?Native module VectorIconsModule tried to override VectorIconsModule for module name RNVectorIconsModule. If this was your intention, set canOverrideExistingModule=true

解決:找到MainApplication.java(android/app/src/main/java/com),里面有有重復(fù)的引用,把重復(fù)的部分刪除就行了

8?Navigator is deprecated and has been removed from this package. It can now be installed and imported from `react-native-deprecated-custom-components` instead of `react-native

解決:
? 1、cd 當(dāng)前目錄
? 2、npm install react-native-deprecated-custom-components --save
? 3、在使用到Navigator組件時換成 :NavigationExperimental.Navigator即可
9 導(dǎo)入react-native-vector-icons報錯
The development server returned response error code: 500URL: http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=falseBody:{"type":"InternalError","errors":[],"message":"Metro Bundler has encountered an internal error, please check your terminal error output for more details"}processBundleResult BundleDownloader.java:242...........
解決:How to install react-native-vector-icons? - Stack Overflow

10?使用MediaCodec報錯:
ACodec: [OMX.qcom.video.encoder.avc] storeMetaDataInBuffers (output) failed w/ err -1010
可忽略,不影響使用
11、error code ERR_STREAM_WRITE_AFTER_END
npm 升級到v6.0.1后,運(yùn)行npm install命令會報這個錯誤

這個報錯是版本的bug。
解決辦法:
第一種:降級npm版本(簡單辦法) , npm i npm@5.7.1 -g?
? ? ? ? ps:具體版本幾跟node版本有關(guān),我的node為v9.4.0,安裝 npm 5.6.0會失敗。
第二種:https://github.com/zkat/pacote/issues/142(得折騰下)
第三種:卸載node,npm,重新安裝node(官網(wǎng)node 自帶了npm)
12??npm update check failed

解決:進(jìn)入c:\users\xxxx\.config目錄,設(shè)置configstore文件夾權(quán)限:設(shè)置當(dāng)前用戶為權(quán)限所有者,擁有完全控制權(quán)限
13?"undefined is not a function (evaluating 'reactDevTools.connectToDevTools')"
RN版本升級到0.57.8后,出現(xiàn)這個問題。
原因分析:react-devtools 3.5.0 breaks new project · Issue #22863 · facebook/react-native · GitHub
解決辦法:
? ??1 刪除lock文件:package-lock.json 和 yarn.lock
? ? 2 刪除node_modules
? ? 3 執(zhí)行命令:npm install 或者 yarn install
其它方法:https://www.hellojava.com/a/49062.html? ? (PS:我嘗試了,但是沒有效果)
14 "bundling failed:failed to start watch mode"
問題說明:運(yùn)行react-native run-android編譯項目后,一直卡在BUNDLE加載,一會后,node顯示報錯"bundling failed:failed to start watch mode",具體報錯位置是"jest-haste-map/build/index.js/788行” 報的錯
解決:1? watchmode官網(wǎng)下載離線安裝包
? ? ? ? ? ?2 解壓到C:\Program Files
? ? ? ? ? ?3 配置環(huán)境變量C:\Program Files\watchman
? ? ? ? ? ?4 打開cmd窗口運(yùn)行 watchman -v 命令檢查是否配置成功
? ? ? ? ? 5 以上步驟后,如果問題仍然沒有解決,則:打開cmd命令窗口,執(zhí)行命令"path=%path%;C:\Program Files\watchman",再重新編譯項目(我是這樣成功的)
15 react-native-baidu-map + react-navigation 底部導(dǎo)航,頁面切換后地圖顯示異常。
使用react-navigation中的createBottomTabNavigator創(chuàng)建了底部導(dǎo)航欄,其中一個為地圖,首次切入地圖頁,地圖正常顯示,切換到其它tab再切回到地圖時,地圖上的文字信息(路名、樓宇名稱)全部消失,如圖所示:

解決:
找到node_modules\react-navigation-tabs\src\views\ResourceSavingScene.js文件,把removeClippedSubviews屬性的值修改為Platform.OS === 'ios' ? !isVisible : false
注:我這是在react-navigation 3.x的源碼上改的, react-navigation 2.x的修改差不多( Platform.OS === 'ios' ? !isFocused : false )
再注:建議升級到react-navigation 3.x,tab切換流暢度提升明顯。


關(guān)于removeClippedSubviews:

源碼中設(shè)置此屬性是為了優(yōu)化內(nèi)存,但對于react-navigation3.x來說,將removeClippedSubviews屬性設(shè)置為false影響不大,因為3.x版本引入了react-native-screen,看其源碼可得知,3.x版本createBottomTabNavigator 中的tab是在fragment 中的,頁面切換是通過控制FragmentTransaction來實現(xiàn)的,這與2.x版本有本質(zhì)區(qū)別,這也是3.x版本tab切換流暢程度提升較大的緣故。