Flutter-Android簽名打包,給小夥伴分享APP吧

其實這個打包的坑還是比較多的,官方文檔顯然是站在大神級程序員的角度寫的,所以如果你看文檔,特別是前端,那基本是打不成功的。

不要怕,我這裏就詳細的把打包的過程和坑給大家演示一下。

配置APP的圖標

想配置APP的圖片,你需要找到下面的目錄:

項目根目錄/android/app/src/main/res/

進入之後你會看到很多mipmap-爲前綴命名的文件夾,後邊的是像素密度,可以看出圖標的分辨率。

  • mdpi (中) ~160dpi
  • hdpi (高) ~240dip
  • xhdpi (超高) ~320dip
  • xxhdpi (超超高) ~480dip
  • xxxhdpi (超超超高) ~640dip

將對應像素密度的圖片放入對應的文件夾中,圖片記得用png格式,記得名字要統一,才能一次性進行配置。

AndroidManifest.xml 文件

這個文件主要用來配置APP的名稱、圖標和系統權限,所在的目錄在:

項目根目錄/android/app/src/main/AndroidManifest.xml

android:label="flutter_app"   //配置APP的名稱,支持中文
android:icon="@mipmap/ic_launcher" //APP圖標的文件名稱

生成 keystore

這裏的坑挺多的,小夥伴一定要注意。官方寫的非常簡單,只要在終端運行如下代碼就可以成功,但事實是報錯。

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

報錯截圖如下:

alt

根本找不到這個目錄,真的很坑,其實我們只是沒有配置環境變量。但是爲了一個包配置環境變量是不知道的。

這時候可以用下面的命令找到keytool.exe的位置。

flutter doctor -v

alt

這時候你直接拷貝命令並進行輸入,但這裏也有個坑,就是如果文件夾中間帶有空空,你需要用帶引號擴上。

D:\Program\Android\'Android Studio'\jre\bin\keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

這就可以了嗎?那你就太天真了,還是會報錯。

alt

這個錯誤的主要問題是目錄不存在和沒有寫權限,所以我們要更換一個有寫權限的目錄。我們把命令改成了下面的形式。

 D:\Program\Android\'Android Studio'\jre\bin\keytool -genkey -v -keystore D:\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

這時候就可以創建成功了。你的D盤下面就會有一個Jks的文件,記住這個文件不能共享給任何人。

有了這個key.jks文件後,可以到項目目錄下的android文件夾下,創建一個名爲key.properties的文件,並打開粘貼下面的代碼。

storePassword=<password from previous step>    //輸入上一步創建KEY時輸入的 密鑰庫 密碼
keyPassword=<password from previous step>    //輸入上一步創建KEY時輸入的 密鑰 密碼
keyAlias=key
storeFile=<E:/key.jks>    //key.jks的存放路徑

我的文件最後是這樣的:

storePassword=123123
keyPassword=123123
keyAlias=key
storeFile=D:/key.jks

這個工作中也不要分享出去哦,這個Key就算生成成功了。

配置key註冊

key生成好後,需要在build.gradle文件中進行配置。這個過程其實很簡單,就是粘貼複製一些東西,你是不需要知道這些文件的具體用處的。

第一項:

進入項目目錄的/android/app/build.gradle文件,在android{這一行前面,加入如下代碼:

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

把如下代碼進行替換

buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
}

替換成的代碼:

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

生成apk

直接在終端中輸入:

flutter build apk

這時候就打包成功了,剩下的安裝過程我就省略,不作過多的介紹了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章