Android程序員安卓應(yīng)用開發(fā)實(shí)戰(zhàn)中常見幾大問題
2016-04-14 16:03:12
3203瀏覽
在Android開發(fā)行業(yè)有基礎(chǔ)甚至就駕輕熟學(xué)生固然已經(jīng)走在學(xué)習(xí)進(jìn)程的前列,但零基礎(chǔ)學(xué)習(xí)Android開發(fā)的還是大有人在,在Android開發(fā)行業(yè)的千百bug深深苦戰(zhàn),小編整理了幾個(gè)在安卓應(yīng)用開發(fā)實(shí)戰(zhàn)中最容易遇到的 React native組件相關(guān)問題。
1.android app啟動(dòng)后,紅色界面,unable load jsbundle
解決辦法:出現(xiàn)這個(gè)問題,一般來說是用dev-serve方式,且server沒有正確匹配上,如果是用手機(jī)跑的話,需要pc和手機(jī)在同一個(gè)wifi下,且通過menu鍵設(shè)置menu-ip為pc的ip,如果是模擬器,則不需要手動(dòng)設(shè)置ip,設(shè)置的話,反倒會(huì)出錯(cuò)。
2.app啟動(dòng)后,紅色界面,unRegisteredProject
解決辦法:這個(gè)后面也是一看就知道的錯(cuò)誤,就是你的index.android.bundle中的最下面寫的那個(gè)‘componetNameInYourLocalProject’在你的java代碼中不是叫這個(gè)名字,自己check下,立刻就能修復(fù)AppRegistry.registerComponent(‘componetNameInYourLocalProject’, () => JSObjAndroid);
3.require(”xxx”)的組件失敗
js代碼中有時(shí)候會(huì)出現(xiàn)require(”xxx”)的組件出錯(cuò)
解決辦法:檢測該node組件是否存在你的服務(wù)器上,如果是自己封裝的NativeModule話可以直接使用
var CustomMoudle = React.NativeModules.YourCustomModule CustomMoudle.yourMethodDeclearInYourNative(‘someparms’);
4.調(diào)試
解決辦法:可以利用pc端的chrome的 debug工具進(jìn)行js端的調(diào)試,native的調(diào)試就只能用logcat跟蹤了,目前看到大部分的錯(cuò)誤都是自己代碼的問題,ReactAndroid本身的Crash較少。
5.so庫的問題
gradle的話,可以通到ndk filter來控制:android { defaultConfig { ndk { abiFilters “x86″, “armeabi-v7a” } }maven的話,可以手動(dòng)通過libs下的so拷貝來解決問題。
這塊有個(gè)比較大的坑就是,默認(rèn)引入的jsc.aar中存在armabi文件夾,但是里面沒有jsc.so 。導(dǎo)致在多個(gè)地方,去編碼源碼時(shí)ndk方面會(huì)報(bào)錯(cuò)。
6.關(guān)于設(shè)備MinSdkVerison
默認(rèn)Android要求4.1以上設(shè)備,剛開始一直使用一個(gè)5.0的設(shè)備進(jìn)行ReactAndorid的測試和開發(fā),后來發(fā)現(xiàn),其實(shí)搞上一個(gè)5.0+的genymotion模擬器聯(lián)調(diào)起來效率會(huì)更高。
7.UIExplorer demo問題
之前一直在看具體接入和
Android代碼實(shí)現(xiàn)方面的,當(dāng)大頭的工作回過頭來看,其實(shí)當(dāng)時(shí)應(yīng)該先從這個(gè)UIExploror入手的話,效率和進(jìn)度應(yīng)該會(huì)有較大提高的。
8.能力覆蓋范圍
根據(jù)團(tuán)隊(duì)之前React iOS的經(jīng)驗(yàn),跟進(jìn)主干代碼,依賴RN本身提供的UI組件可以滿足大部分業(yè)務(wù)場景。
當(dāng)然自己如果想復(fù)用之前團(tuán)隊(duì)沉淀下來的,配合著UIManager和UIModule這塊本身工作量到也不算太大。
但是應(yīng)該盡可能的和團(tuán)隊(duì)以后的JS端和iOS端的協(xié)議接口保持一致,讓React最大的意義發(fā)揮出來,“l(fā)ean once run everywhere”
9.數(shù)據(jù)安全
0.14之前只支持dev-pc 和assert方式,從0.14.0 realease版本開始支持local file patch加載方式,最新版0.15.1。
因?yàn)槿绻獎(jiǎng)討B(tài)能力,js必定是走網(wǎng)絡(luò)端下發(fā)的,js本身是明文(即使JS做了混淆),數(shù)據(jù)防劫持的保護(hù)還是必須要做的,這點(diǎn)可以配合https防篡改+sign校驗(yàn)來做。
10.JNI消息輪訓(xùn)帶來的影響
由于JNI的通信限制,Java層和Native通信是單向的,且為了保證RN的16ms的渲染頻率,所有Java-Native-jscore層的通信都是異步的,這樣可能對于JAVA層的UI渲染是個(gè)性能問題。
當(dāng)消息量非常大或Listview頁面非常復(fù)雜時(shí)候,每1層Cell的渲染要以Css-ScrowllerView模型需要UI線程的連續(xù)繪制,對于瀑布流負(fù)責(zé)listview等可能會(huì)存在性能問題,但是該問題本身肯定是優(yōu)于H5的體驗(yàn)的。
上面就是React native組件相關(guān)問題及解決方方,當(dāng)然,如果你同樣對Android開發(fā)有其他問題,歡迎關(guān)注千鋒扣丁在線Android開發(fā)。
查看更多關(guān)于“Android培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽: