react-native 打包apk 的那些坑


在使用react-native 的整個過程中,我深一腳淺一腳的走到今天,着實為自己感到高興。在此記錄踩坑過程,阿門!

官方文檔 中有完整打包apk步驟,我們一步步來。

首先,我們需要使用keytool生成一個私有秘鑰,在Windows上keytool命令放在JDK的bin目錄中。也就是說,命令必須在JDK安裝的bin目錄下運行,命令如下:

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-
alias -keyalg RSA -keysize 2048 -validity 10000

接下來的過程中,我需要輸入秘鑰口令及其他的一些信息,一切都很完美,就在此時,拋出一個錯誤:

java.io.FileNoFoundException:my-release-key.keystore(拒絕訪問。)

圖片描述

這個錯誤是說找不到my-release-key這個文件,這是由於在安裝我的JDK安裝到了C盤,命令行在當前路徑下沒有寫入文件的權限。這時,可以選擇兩種解決方法:

  1. 以管理員身份運行cmd,執行上述命令。
    有多種方法可以使用,這里只敘述一種,在路徑C:\Windows\System32中找到cmd.exe,右鍵以管理員身份運行。

  2. 我們可以將秘鑰生成於其他盤,運行如下命令,將<MY_PATH>替換成秘鑰保存路徑即可。

    $ keytool -genkey -v -keystore my-release-key.keystore -alias
    my-key-alias - keyalg RSA -keysize 2048 -validity 20000 -keystore
    /<MY_PATH>/my-release-key.keystore

接下來,設置gradle變量。官方文檔有詳細步驟,這里只做簡單敘述

  1. 將剛剛生成的秘鑰放到項目下的android/app文件夾下

  2. 編輯或創建~/.gradle/gradle.properties,將以下示例代碼添加進去,注意要將******部分替換成相應密碼

    MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
    MYAPP_RELEASE_KEY_ALIAS=my-key-alias
    MYAPP_RELEASE_STORE_PASSWORD=*****
    MYAPP_RELEASE_KEY_PASSWORD=*****

最后,生成發行apk包。運行如下命令:

cd android && ./gradlew assembleRelease

在windows 系統下,可能無法識別&&命令,所以講上述命令分為兩步:先運行cd android,進入當前項目下的android文件夾,然后運行./gradlew assembleRelease,就在即將大功告成之際,報了如下錯誤:

Exception in thread "main" java.util.zip.ZipException: error in opening zip file

圖片描述

這是由於gradle.zip下載有問題,解決方法有二。

  1. gradle-2.14.1-all.zip刪除后重新運行上述命令,文件會重新下載。
  2. 手動下載文件,將其放到對應文件夾

gradle-2.14.1-all.zip文件對應位置在個人電腦上有所不同,在我這里是C:\Users\wxl\.gradle\wrapper\dists\gradle-2.14.1-all\8bnwg5hd3w55iofp58khbp6yv

下載成功之后,再次鍵入命令,發現這最后一步還是沒有邁過去。系統報錯:gradlew : 無法將“gradlew”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確,然后再試一次。

clipboard.png

官方文檔中有這樣一句:

./gradlew assembleRelease在macOS、Linux或是windows的PowerShell環境中表示執行當前目錄下的名為gradlew的腳本文件,且其運行參數為assembleRelease,注意這個./不可省略;而在windows的傳統CMD命令行下則需要去掉./

所以我在運行時,直接運行gradlew assembleRelease,實際上這樣反而會報錯,正確的命令就是./gradlew assembleRelease。這一步僅作為參考,可能和windows的系統版本有關。

clipboard.png

這次,打包順利完成,如圖就是我們所打包出來的apk,生成的APK文件位於android/app/build/outputs/apk/app-release.apk

clipboard.png

寫在最后,鑒於本人水平有限,如文章有錯誤之處,請不吝指正!()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM