Android 端 10 個最常見問題
這裡逐條記錄下最容易遇到的 React native android 相關case
1.app啟動後,紅色介面,unable load jsbundle
解決辦法:一般來說就是,你是用dev-serve方式,且你的server沒有正確匹配上,如果是用手機跑的話,需要pc和手機在同一個wifi下,且通過menu鍵設定menu-ip為pc的ip,如果是模擬器,則不需要手動設定ip,設定的話,反倒會出錯
2.app啟動後,紅色介面,unRegisteredProject
- 提示提示什麼,你的app沒有在啟動時候註冊
- 解決辦法:這個後面也是一看就知道的錯誤,就是你的index.android.bundle中的最下面寫的那個
- ‘componetNameInYourLocalProject’在你的java程式碼中不是叫這個名字,自己check下,立刻就能修復AppRegistry.registerComponent(‘componetNameInYourLocalProject’, () => JSObjAndroid);
3.require(”xxx”)的元件失敗
- js程式碼中有時候會出現require(”xxx”)的元件出錯 解決辦法:檢測該node元件是否存在你的伺服器上,如果是自己封裝的NativeModule話可以直接使用
- var CustomMoudle = React.NativeModules.YourCustomModule CustomMoudle.yourMethodDeclearInYourNative(‘someparms’);
4.除錯
- 解決辦法:可以利用pc端的chrome的 debug工具進行js端的除錯,native的除錯就只能用logcat跟蹤了,目前看到大部分的錯誤都是自己程式碼的問題,ReactAndroid本身的Crash較少
5.so庫的問題
- gradle的話,可以通到ndk filter來控制:android { defaultConfig { ndk { abiFilters “x86″, “armeabi-v7a” } }
- maven的話,可以手動通過libs下的so拷貝來解決問題。
- 這塊有個比較大的坑就是,預設引入的jsc.aar中存在armabi資料夾,但是裡面沒有jsc.so 。導致在多個地方,去編碼原始碼時ndk方面會報錯。
6.關於裝置MinSdkVerison
- 預設Android要求4.1以上裝置(4.0根據網路資料大概佔比0.7比例,隨著大部分app已經不支援4.0以下裝置了,這塊倒還可以接受)
- 剛開始一直使用一個5.0的裝置進行ReactAndorid的測試和開發,後來方向,其實搞上一個5.0+的genymotion模擬器聯調起來效率會更高。
7.UIExplorer demo問題
- 之前一直在看具體接入和程式碼實現方面的,當大頭的工作回過頭來看,其實當時應該先從這個UIExploror入手的話,效率和進度應該會有較大提高的。
- 這塊需要編譯react原始碼,如果遇到了https://github.com/facebook/react-native/issues/3976 的問題,可以使用我在下面回覆的方法hook,但是本質原因還是那個armabi jsc.so的問題
8.能力覆蓋範圍
- 根據團隊之前React iOS的經驗,跟進主幹程式碼,依賴RN本身提供的UI元件可以滿足大部分業務場景。
- 當然自己如果想複用之前團隊沉澱下來的,配合著UIManager和UIModule這塊本身工作量到也不算太大。
- 但是應該儘可能的和團隊以後的JS端和iOS端的協議介面保持一致,讓React最大的意義發揮出來,“lean once run everywhere”
9.資料安全
- 0.14之前只支援dev-pc 和assert方式,從0.14.0 realease版本開始支援local file patch載入方式,最新版0.15.1。
- 因為如果要動態能力,js必定是走網路端下發的,js本身是明文(即使JS做了混淆),資料防劫持的保護還是必須要做的,這點可以配合https防篡改+sign校驗來做
10.JNI訊息輪訓帶來的影響
- 由於JNI的通訊限制,Java層和Native通訊是單向的,且為了保證RN的16ms的渲染頻率,所有Java-Native-jscore層的通訊都是非同步的,這樣可能對於JAVA層的UI渲染是個效能問題。
- 當訊息量非常大或ListView頁面非常複雜時候,每1層Cell的渲染要以Css-ScrowllerView模型需要UI執行緒的連續繪製,對於瀑布流負責listview等可能會存在效能問題,但是該問題本身肯定是優於H5的體驗的
相關文章
- 10個最常見的JavaScript問題JavaScript
- 專案管理中最常見的10個問題專案管理
- Python學習中最常見的10個列表操作問題Python
- 資料庫安全問題?這裡有10個最常見的資料庫
- Python面試最常問的10個問題Python面試
- 故障排除提示:5 個最常見的 Linux 問題Linux
- 動態規劃,這幾個問題最常見!動態規劃
- Redis最常見面試問題Redis面試
- Python列表最常見的問題【總結】Python
- Redis的那些最常見面試問題Redis面試
- 避開日常Kubernetes最常見的10個坑
- 關於“等保保護”最常見問題解答!
- Android Studio常見問題(+)Android
- 最常見的15個Java多執行緒,併發面試問題Java執行緒面試
- 警惕!移動支付最常見安全問題是個人資訊洩露
- 談談12個最常見的資料質量問題及其來源
- 使用kubernetes的10個最常見錯誤 – pipetail BlogAI
- API 閘道器的10個最常見用例API
- 關於 Python 列表操作,最常見問答Top10Python
- 【整理】最常見的10道Python面試題及答案!Python面試題
- 容器(一)剖析面試最常見問題之 Java 集合框架面試Java框架
- 關於Java異常最常見的八大問題Java
- 10個常見的資料庫安全問題資料庫
- C語言初學者最常問的幾個問題C語言
- 10個常見的Redis面試"刁難"問題Redis面試
- PHP 安全問題入門:10 個常見安全問題 + 例項講解PHP
- 面試開掛!208 個最常見 Java 面試題全解析Java面試題
- Linux獲取10個你最常用的終端命令列表Linux命令列
- 【譯】10 種 JavaScript 最常見的錯誤JavaScript
- Linux 常見問題 - 拒絕遠端訪問Linux
- windows 10 安裝和使用中5個常見問題Windows
- Android Studio 中 Preview 常見問題和技巧AndroidView
- C語言新手最常見的問題!你在這裡跌倒過嗎?C語言
- 關於程式碼簽名證書10個常見問題
- 最常見的求職面試問題:“請介紹一下你自己求職面試
- grub常見的幾個問題
- Android Oreo 常見問題 2.0 | Android 開發者 FAQ Vol.9Android
- Android Oreo 常見問題 3.0 | Android 開發者 FAQ Vol.11Android
- 2018年最常見的Python面試題&答案(上篇)Python面試題