Flutter 如何发布安卓apk

505 阅读3分钟

启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情

Flutter系列文章列表

  1. 2022年了,你还不会flutter!!!
  2. Flutter 第一课---flutter特点及组件开发
  3. Flutter 第二课---组件生命周期和App生命周期
  4. Flutter 第三课---状态管理之Provide
  5. Flutter 第四课---路由管理
  6. Flutter 第五课 --- 包管理器和资源管理
  7. Flutter 第六课 --- flutter网络请求
  8. Flutter 第七课 --- flutter 网络封装
  9. Flutter 第八课 ---使用 Flutter 构建 Web 应用
  10. 如何正确的在flutter中添加webview
  11. flutter原生 与 js 交互
  12. flutter web 与 js 交互
  13. flutter web 与 js Promise 通信
  14. (保姆级推荐)在Flutter web中加载html是一种什么体验
  15. flutter 跨页面通信 postMessage 使用

前言

应用开发完了,当然需要发布了,下面来看看用 Flutter 开发的应用如何发布,这里我们只关注 Android 版本的发布。

检查AndroidManifest.xm

路径:项目根目录\android\app\src\main

修改app名字

<application
  android:label="flutter_h5"  // 替换为实际app name
  android:name="${applicationName}"
  android:icon="@mipmap/ic_launcher">
</application> 

修改包名

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="实际app 包名">
</manifest>   

配置app 图标

Flutter 应用有个默认的图标。在发布应用之前需要按照如下方式来替换启动图标:

  • 在 项目根目录/android/src/main/res/ 目录中替换对应的图标。启动图标位于 mipmap-XXX 目录中.
  • 替换图标后,运行 flutter run 命令来启动应用,并在手机 Launcher 中验证

app签名

安装 chocolatey

chocolatey.org/install

安装java

choco install jdk8

创建签名文件

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
  • keystore 参数后的值: my-release-key.keystore, 表示一会儿要生成的那个 签名文件 的名称;请先保存好这个名称,因为后面发布项目期间会用到它。
  • alias 参数后面的值:my-key-alias,后续发布项目期间也会用到,因此也需要保存好这个参数值;注意:这个参数的值可以根据自己的需要进行自定制。
  • 当运行这个命令的时候,需要输入一系列的参数,和相关的口令的密码,一定要保存好相关的密码,后期会用到。
  • 当生成了签名之后,这个签名,默认保存到了自己的用户目录下 C:\Users\用户名目录\my-release-key.keystore
  • 将自己的签名证书 copy 到 android/app 目录下。

引用应用程序中的 keystore

创建一个名为 xiang/android/key.properties 的文件,其中包含对密钥库的引用:

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g.  ../key.jks>

gradle中配置签名

通过编辑 项目根目录/android/app/build.gradle 文件为您的应用配置签名: 在android{ }对象之前添加

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

替换

buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.debug
    }
}

为:

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

构建一个发布版(release)APK

使用命令行:

  • flutter build apk (flutter build 默认会包含 —release 选项)
  • 打包好的发布APK位于项目根目录/build/app/outputs/apk/app-release.apk。

结束语

至此我们就完成android打包全部过程。作为一名前端开发者,来讲安卓打包多少有点膨胀,仅记录打包流程,不会讲具体内容,如遇讲解有误,还请指正