這裡說說react native建立完成之後,運作中出現的常見問題,
問題1:
java.lang.runtimeexception: sdk location not found. define location with sdk.dir in the local.properties file or with an android_home environment variable.
這個是原因是工程找不到我們的android sdk。
解決方法:在工程的根目錄下的android檔案下建立一個local.properties的檔案(我們可以直接拷貝android項目的local.properties的檔案)。
問題2:
a problem occurred configuring project ':app'.>failed to find build tools revision 23.0.1
這個是因為build tools revision 23.0.1和我們的sdk裡面的版本不一緻導緻的。
解決方法:這裡注意build.gradle和gradle中gradle-wrapper.properties的對應關系。
3,could not install the app on the device, read the error above for details.
這個是因為未找到運作的裝置
解決方法:注意在運作指令:react-native
run-android之前一定要確定手機已經連接配接上電腦。
4,com.android.ddmlib.installexception:
failed to establish session
這是小米手機調試的問題,我之前用魅族就沒這問題
解決方法:小米手機設定裡-------開發者選項---------啟用miui優化關閉
其他問題補充:
q:rn所支援的最低ios和android版本?
a:android >= 4.1 (api 16)
ios >= 7.0
q:rn和cordova/phonegap是一個東西嗎?
a:不一樣。rn不是一個webview(但包含了webview元件),不能直接複用web頁面代碼。rn的性能接近原生,超過cordova/phonegap。
q:可以使用現有的js庫嗎?
a:由于rn理論上更接近nodejs的運作環境,是以對nodejs的庫相容更好一些。浏覽器端的js庫,涉及到dom、bom、css等功能的子產品無法使用,因為rn的環境中沒有這些東西
q:如何更新rn版本?
a:請用編輯器打開項目目錄中的package.json,找到類似下面的一行配置
"react-native": "0.31.0"
q:應該使用什麼ide開發?
a:雖然常用的js編輯器很多,但由于rn大量使用jsx和es6文法,目前隻有sublime text(通過插件)和webstorm(10以上版本)提供了良好的支援。筆者推薦webstorm,因為它有更完善的文法提示和補全。另外雖然主要的業務邏輯是使用js開發,但仍然要依賴于原生的編譯/調試環境,是以你還需要同時運作xcode(ios)或android studio(android)等。
q:如何開啟調試功能?
a:點選ios模拟器頂部的hardware菜單,選擇shake gesture(對應真機搖一搖),會自動彈出如下圖的菜單。
安卓模拟器則是點選菜單鍵,真機上沒有菜單鍵的,搖一搖即可。
選擇debug in chrome即會啟動chrome作為運作和調試環境(注意此時js引擎為chrome的v8,與ios真機的javascriptcore引擎存在一些差異)。選擇inspect element即可以像調試網頁元素一樣檢視布局元素的樣式,但比較簡陋。react devtools插件可裝可不裝,它隻用來檢視布局,不影響調試,且在目前的版本(>0.13)中還無法正常加載。
q:使用listview時報錯:sticky header index 0 was outside the range {...}
a:看起來是個數組越界錯誤,但多數情況下是由于listview的子元件渲染錯誤(如套資料時沒有檢查undefined等)引起,而非listview本身的問題。
q:在使用navigator的同時使用listview或scrollview,後兩者的頭部會多出一些空間。
a:将automaticallyadjustcontentinsets屬性設為{false}.