跳至主要內容

打包相关

chanchaw大约 3 分钟flutter

app icon

更换 app 图标,按照下图操作。制作方法来自 官网教程open in new window。可通过 在线图标制作网站open in new window 将一个 png 图标制作为 android 的多分辨率的多文件

apk

cmd 中切换路径到项目根目录,执行命令 flutter build apk --split-per-abiflutter build 默认带有 --release 参数)

执行该命令后会生成下面3个 APK 文件

  • [project]/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
  • [project]/build/app/outputs/apk/release/app-arm64-v8a-release.apk
  • [project]/build/app/outputs/apk/release/app-x86_64-release.apk

如果移除 --split-per-abi 将会生成一个包含所有目标 ABIfat APK 文件。这种 APK 文件将会在比单独构建的 APK 文件尺寸要大,会导致用户下载一些不适用于其设备架构的二进制文件

特别注意


在文件 D:\source\flutter\netstorage\android\app\build.gradle.kts 的配置项

android {
    defaultConfig {
        targetSdk = 33
    }
}

Google Play 中要求至少版本号是 33,在编译给 Android9 系统使用时在这里调低为21后使用命令 flutter build apk --split-per-abi --release 编译 apk 会报错。调整为33后重新编译就没有报错了

exe

执行命令 flutter build windows 后在目录 D:\source\flutter\winfirst\build\windows\x64\runner\Release 下的所有文件和子目录一起拷贝到客户机上双击 exe 文件就可以运行

应用签名

  1. 创建上传密钥

PowerShell 中执行下面命令(打开 PowerShell 默认所处的路径是 C:\Users\Administrator

keytool -genkey -v -keystore $env:USERPROFILE\upload-keystore.jks `
        -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 `
        -alias upload

之后要求填写开发者的基本资料:姓名=我常用的cc英文,公司和组织都是 xdf,城市=suzhou,省份 = jiangsu,国家和地区=china,密钥库 = 上传密钥 = 自己常用的数字+英文

最后会创建文件 upload-keystore.jksC:\Users\Administrator 目录下 (打开 PowerShell 后就使用了默认路径,没有更改路径,并且执行的命令中也指定了使用 $env:USERPROFILE )。将该文件拷贝到别的地方并保存好,防止重装系统后丢失文件,该文件用于上传 apkGoogle Play 时的上传密钥。同时上传到180的阿里云盘的路径:备份文件 > 文档 > pro > android >上传密钥 目录下

  1. Flutter 项目的 android 下创建上传密钥的配置文件。在 Flutter 项目的 android 平台目录下创建文件 key.properties,内容如下
storePassword=在步骤1中设置的上传用密钥(数字+英文)
keyPassword=同上
keyAlias=upload
storeFile=密钥文件所在绝对路径,如果有空格则使用双引号包裹整个路径
  1. Gradle 中配置签名,添加如图红色框内的代码,注意代码位置。下图中缺少了头部的两个导入代码
import java.util.Properties
import java.io.FileInputStream

最后记得在 flutter 项目根目录下运行命令清理缓存,防止编译时没有应用签名 flutter clean

注意

按照官网的步骤编译一个 apk 文件过程很繁琐,其中有很多步骤都可以不做,推荐的最小执行步骤是:

  1. 添加启动图标
  2. app 签名
  3. 检查 app manifest 文件
  4. 检查构建配置
  5. 为发布构建应用(编译为 apk