1. 程式人生 > >react-native-cli執行專案及打包apk失敗的解決過程

react-native-cli執行專案及打包apk失敗的解決過程

剛開始學習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/即可,可以下載到各個版本的

distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip #指定本地檔案代替原本網路下載 distributionUrl=file:///D:/android-sdk/gradle-4.4-all.zip

 

 

問題二:gradlew assembleRelease打包安裝包出錯,同樣按照官網教程一步步做,前面的生成簽名檔案問題不大,但是最後執行gradlew assembleRelease的時候報錯了,錯誤提示大概是說不能訪問@babel\parser\.bin\parser這個目錄的問題,我在node_modules下確實找到了這個資料夾,發現最終目錄下是一個快捷方式,然後這個快捷方式確實打不開,感覺問題應該就出在babel這裡,然後我看了一下專案的package.json,發現有這樣一個包

metro-react-native-babel-preset

這應該是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 [email protected],命令中@指定版本確保安裝0.48.3版本的包,安裝完成重新執行打包命令gradlew assembleRelease

這一回執行沒有出現異常,最後提示構建成功,專案目錄下的android\app\build\outputs\apk\release目錄也出現了最新的apk檔案。

至此react native兩個基本的操作即模擬器執行以及生產安裝包可算是成功了,總結來講主要的問題點是版本之間的相容問題,新版本的某些行為特性改變或者是舊版本還未出現所使用到的行為特性,這都可能導致整體的執行異常