剛開始學習react native,第一步自然是搭建好開發環境,node及jdk本身就有,Python2、Android studio以及Android sdk的安裝倒是沒什么大問題,按照官網的教程做就行了,還有Android studio我目前理解的是其實主要作用就是配置對應版本的安卓模擬器或者是安裝sdk比較方便,
不過在項目正確跑起來之前確實也碰到一些問題,這里把自己的解決經歷記錄下來
問題一:react-native run-android的時候在download gradle的時候等了很久,然后就是提示失敗,說是打包的時候出現了解壓異常什么的問題,另外也提示說確認是否已經連接到可用的安卓設備什么的,搗騰了一會安卓模擬器發現我確實沒有配置正確,因為Android studio默認的安卓模擬器是Android 9,但是官網說明目前應該使用Android 8.1,好吧那就新建一個,結果還是不行,然后考慮到每次運行的時候總是在提示說下載gradle-4.4-all.zip等待一段時間,所以我想可能就跟這個有關,網上查了一下還真有這個問題,其實就是下載超時,解決方式就是自己先下載好對應壓縮包放到本地,然后修改配置文件把路徑指向本地文件即可,
配置文件是項目目錄下的android\gradle\wrapper\gradle-wrapper.properties,修改后內容如下,而且注意最好用相同版本,我開始就是下載別人博客下提供的鏈接,下載了比較舊的一個版本結果運行還是出錯了,下載gradle訪問http://services.gradle.org/distributions/即可,可以下載到各個版本的
問題二:gradlew assembleRelease打包安裝包出錯,同樣按照官網教程一步步做,前面的生成簽名文件問題不大,但是最后運行gradlew assembleRelease的時候報錯了,錯誤提示大概是說不能訪問@babel\parser\.bin\parser這個目錄的問題,我在node_modules下確實找到了這個文件夾,發現最終目錄下是一個快捷方式,然后這個快捷方式確實打不開,感覺問題應該就出在babel這里,然后我看了一下項目的package.json,發現有這樣一個包
這應該是react基於babel封裝的一個包,實現了react自身在轉換js時需要進行的一些操作什么的,我心想換一個版本看看好不好用,
執行命令npm view metro-react-native-babel-preset versions查看該包的所有版本,嗯,確實之前有很多版本,而現在用的是最新的0.49.0,
那么先npm uninstall metro-react-native-babel-preset把原來的包卸載,
然后重新安裝上一個版本,npm i --save-dev metro-react-native-babel-preset@0.48.3,命令中@指定版本確保安裝0.48.3版本的包,安裝完成重新執行打包命令gradlew assembleRelease
這一回執行沒有出現異常,最后提示構建成功,項目目錄下的android\app\build\outputs\apk\release目錄也出現了最新的apk文件。
至此react native兩個基本的操作即模擬器運行以及生產安裝包可算是成功了,總結來講主要的問題點是版本之間的兼容問題,新版本的某些行為特性改變或者是舊版本還未出現所使用到的行為特性,這都可能導致整體的運行異常