Flutter的apk打包

楓葉砂發表於2020-07-03

配置APP圖示

因為作為iOSer,所以我在這隻講Android的APP圖示在VScode中的配置。

  • 專案根目錄/android/app/src/main/res/
  • 進入之後你會看到很多mipmap-為字首命名的資料夾,後邊的是畫素密度,可以看出圖示的解析度。
名稱 dpi
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

  • 在VScode輸入flutter doctor -v找到Android toolchain欄目下的Java binary at:,複製這個標題項的地址。
  • 我Mac的地址是/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
  • 在VScode的終端輸入查詢到的java根目錄地址以及keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key 即:/Applications/'Android Studio.app'/Contents/jre/jdk/Contents/Home/bin/keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
  • 回車後,他會要求你輸入金鑰庫口令,記住你的口令,稍後會用到。
  • 繼續操作後,還會要求你的金鑰密碼,同樣也要記住這個密碼。
  • 之後在你的user目錄下生成key.jks.這個key.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的存放路徑

配置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
    }
}
複製程式碼

修改gradle配置

很多人在生成apk的時候都遇到了Running Gradle task 'assembleRelease'錯誤提示。

修改專案下 build.gradle 和 flutter 安裝目錄flutter/packages/flutter_tools/gradle/flutter.gradle 兩個檔案中 buildscript 和allprojects 中的:

google()
jcenter()
複製程式碼

替換為:

maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
複製程式碼

生成apk

直接在終端中輸入:

flutter build apk

相關文章