Flutter 項(xiàng)目打包成 APK

注:

  • 本次所記錄的打包流程全部都是在 VSCode上完成,Android Studio 也一樣。
  • 本次使用 Gradle 配置打包

一、檢查 & 安裝 JDK

  • 檢查當(dāng)前 JDK 的版本號(hào) java -version

如果已經(jīng)顯示當(dāng)前 java version 版本號(hào),說明 JDK 安裝成功,或者之前就安裝過,如果已經(jīng)安裝,可以忽略下面的安裝步驟

  • 安裝 JDK

可以選擇終端安裝 brew cask install oracle-jdk,顯示 brew cask install oracle-jdk 即是安裝成功。 因?yàn)槲倚枰?Homebrew,所以使用官網(wǎng)下載安裝的方式

  1. JDK 官網(wǎng)下載地址,下載對(duì)應(yīng)的版本,我的是 MBP,所以選擇了 macOS Installer

2.安裝成功后,用終端打開環(huán)境配置文件:vim .bash_profile,增加 export JAVA_HOME=$(/usr/libexec/java_home)

3.保存并退出 esc -> wq

4.執(zhí)行 source .bash_profile 更新配置文件并生效

5.檢查 JDK 的版本號(hào) ,看是否成功

二、生成簽名證書 .jks

使用簽名的主要作用是:

1.應(yīng)用程序升級(jí):只有以同一個(gè)證書簽名,系統(tǒng)才會(huì)允許安裝升級(jí)的應(yīng)用程序。如果你采用了不同的證書,那么系統(tǒng)會(huì)要求你的應(yīng)用程序采用不同的包名稱,在這種情況下相當(dāng)于安裝了一個(gè)全新的應(yīng)用程序。如果想升級(jí)應(yīng)用程序,簽名證書要相同,包名稱要相同!

2.應(yīng)用程序模塊化:Android 系統(tǒng)可以允許同一個(gè)證書簽名的多個(gè)應(yīng)用程序在一個(gè)進(jìn)程里運(yùn)行,系統(tǒng)實(shí)際把他們作為一個(gè)單個(gè)的應(yīng)用程序,此時(shí)就可以把我們的應(yīng)用程序以模塊的方式進(jìn)行部署,而用戶可以獨(dú)立的升級(jí)其中的一個(gè)模塊。

3.代碼或者數(shù)據(jù)共享:Android 提供了基于簽名的權(quán)限機(jī)制,那么一個(gè)應(yīng)用程序就可以為另一個(gè)以相同證書簽名的應(yīng)用程序公開自己的功能。以同一個(gè)證書對(duì)多個(gè)應(yīng)用程序進(jìn)行簽名,利用基于簽名的權(quán)限檢查,你就可以在應(yīng)用程序間以安全的方式共享代碼和數(shù)據(jù)了。

注意:一旦給Apk簽名并上線后,簽名文件和密碼別名等一定不能丟失,否則就等著跑路吧。

把生成證書的路徑,替換成自己的,在終端執(zhí)行下面的命令

keytool -genkey -v -keystore <存放的路徑>/sign.jks -keyalg RSA -keysize 2048 -validity 10000 -alias sign

1.genkey : 產(chǎn)生密鑰

2.keystore :

3.<存放的路徑>/sign.jks :證書的存放路徑和名字

4.keyalg RSA -keysize 2048 :使用 2048 位 RSA 算法對(duì)簽名加密

5.validity 10000 :有效期時(shí)間,這里是 10000天

6.alias sign : 別名 sign

三、配置打包文件

  • 導(dǎo)入上面創(chuàng)建好的證書, key 文件夾如果沒有,則創(chuàng)建
 < flutter 項(xiàng)目>/android/app/key/sign.jks
  • 創(chuàng)建 key.properties 文件
 < flutter 項(xiàng)目>/android/key.properties

添加配置,可以復(fù)制已有的 properties 文件,修改名字和對(duì)應(yīng)的內(nèi)容

storePassword=android
keyPassword=123456
keyAlias=sign
storeFile=key/sign.jks

1.storePassword :
2.keyPassword :生成簽名證書輸入的密庫口令
3.keyAlias :證書的別名
4.storeFile :證書相對(duì)于 key.properties 的路徑

  • 配置 build.gradle 文件
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

    signingConfigs {
        release {
            keyAlias 'sign'
            keyPassword 'android'
            storeFile file('key/sign.jks')
            storePassword 'android'
        }
    }

四、VSCode 最終的目錄配置

Flutter 打包 生成apk

  • 在 VSCode 中的 終端中輸入 flutter build apk,如果最終顯示 ? Built ***,說明打包成功
  • build/app/outputs/flutter-apk/app-release.apk是在項(xiàng)目中的子路徑,到這里,APK 打包就已經(jīng)順利成功。

源作者:Gavin_Kang
鏈接:https://juejin.cn/post/6894114964965949453

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容