前言

完成项目时,我们需要将项目打包成一个apk,方便测试以及发布版本.
并且发布版本还需要签名,今天把这一系列操作记录下来.

App签名

创建 keystore

如果您有现有keystore,请跳至下一步。如果没有,请通过在运行以下命令来创建一个:

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

注意:

  • 保持文件私密; 不要将它加入到公共源代码控制中。
  • 此操作生成的签名是*.jks格式

引用应用程序中的keystore

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

storePassword=<创建keystore时的storePassword>
keyPassword=<创建keystore时的keyPassword>
keyAlias=key
storeFile=<密钥库文件的位置 , 例如: /Users/<user name>/key.jks>

文件内容和层级如图所示:

注意:

  • 保持文件私密; 不要将它加入公共源代码控制中.
  • storeFile 这里要使用绝对路径

在gradle中配置签名

通过编辑/android/app/build.gradle文件为您的应用配置签名

替换:

android {

为:

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

替换:

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版本将自动进行签名。

构建一个发布版(release)APK

使用命令行:

  • cd <app dir> (<app dir> 为您的工程目录).
  • 运行flutter build apk (flutter build 默认会包含 --release选项).

可直接使用编辑器中的Terminal运行 flutter build apk 命令.

打包好的发布APK位于/build/app/outputs/apk/app-release.apk。

在设备上安装发行版APK

按照以下步骤在已连接的Android设备上安装上一步中构建的APK

使用命令行:

  • 用USB您的Android设备连接到您的电脑
  • cd <app dir> .
  • 运行 flutter install .

将APK发布到Google Play商店

将应用的release版发布到Google Play商店的详细说明,请参阅 Google Play publishing documentation. (国内不存在的,但你可以发布到国内的各种应用商店)

flutter 打包apk相关推荐

  1. Flutter打包apk中的一些巨坑

    许多人在使用Flutter打包apk时都会参照文档的做法,但是按照文档基本上是百分之百失败的[手动狗头],官网的做法是这样的(可以不用看) 官网做法 但是方法基本不可行. 下面介绍一下正确的打包姿势 ...

  2. AndroidStudio中Flutter打包APK

    1.生成签名文件 在打包之前我们需要一个签名文件,证明文件的唯一性. keytool -genkey -v -keystore F:\APP\sign.jks -keyalg RSA -keysize ...

  3. Flutter 打包APK aab

    打包APK 命令 flutter build apk 打包aab 命令 flutter build appbundle 打包需要生成签名文件 test.jks (1) 我的项目所在地 D:\Flutt ...

  4. Flutter 打包APP (Android IOS)

    打包Android apk 参考 https://flutter.dev/docs/deployment/android https://flutterchina.club/android-relea ...

  5. flutter/Android接入友盟、阿里百川SDK,打包APK后报无法加载arr库的坑

    刚接触flutter,边学边做.其实遇到的是两个坑,但看起来像是同个问题引起的,多么痛的领悟,基础不牢.解决问题流程不对太耽误时间了. 打包APK后报无法加载友盟arr库 有篇帖子说是启用压缩导致的, ...

  6. Flutter之apk打包(windwos)

    1.程序在安卓手机上运行以后,长按图标,会出来分享,点击分享,发送给好友得的的就是apk包,他人可以安装 电脑打包 官方只有这行命令: keytool -genkey -v -keystore ~/k ...

  7. Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)

    默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大. 这时,我们就需要分别打出不同的架构包. 架构 一般来说,x86代表3 ...

  8. flutter打包的app有多大_Flutter-最近搞了个项目(常用控件,第三方基本库)-底部导航,登录,启动画面,webview等...

    先看下用到的基本的第三方库(上拉加载,下拉刷新的库打算后期比较懂了后自己尝试封装下,提升下技能): cached_network_image: ^0.8.0permission_handler: ^3 ...

  9. flutter打包的app有多大_Flutter原生混合开发

    使用 Flutter 从头开始写一个 App是一件轻松惬意的事情.但是对于成熟产品来说,完全摒弃原有 App 的历史沉淀,全面转向 Flutter 并不现实.用 Flutter 去统一 iOS/And ...

最新文章

  1. javascript之namespace模式
  2. Spring boot错误处理原理
  3. 银行计算机记账比赛,在银行柜台业务技术比赛颁奖仪式上的讲话(一).doc
  4. docker --- mysql的部署
  5. oracle外网监听端口,oracle 11g 修改默认监听端口1521
  6. php无需鉴权的接口,thinkphp5-restfulapi 博客 接口鉴权应用
  7. 实时传输文件到服务器,如何将数据实时上传到云服务器
  8. Microsoft Data Access Components(MDAC) 结构以及一些连接SQL数据库的架构基础
  9. maven 构建spring boot + mysql 的基础项目
  10. git实现ssh免密上传远程gitlab仓库
  11. adblock插件_为WordPress创建一个反AdBlock插件
  12. 【解析】.NET中代理服务器WebProxy的各种用法
  13. Android MTK 6763 User 版本默认打开usb调试
  14. python将红底证件照转成蓝底
  15. 你可能已经被运营商http劫持了
  16. i.MX6ULL系统移植:Linux移植6 - Linux 内核移植
  17. 【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView
  18. 示波器常用的13个概念
  19. 使用STM32CUBEMX HAL库读写SD卡
  20. U盘无法拷贝4G以上的文件

热门文章

  1. 阿里云大数据型实例规格族d1配置性能详解
  2. 2022金九银十Android大厂面试题来袭,面试字节跳动被问Android屏幕适配方案
  3. 编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的“随机步法”。程序必须随机地从一个元素“走到”另一个元素,每次都向上、向下、向左或向右移动一个元素位置
  4. 焦虑 程序员_我如何克服焦虑和沮丧来完成freeCodeCamp的前端开发程序
  5. js计算金额精度问题--currency.js(2022.11.10 阴)
  6. OpenCV视频篇——颜色跟踪
  7. Hdu 3929 Big Coefficients (容斥原理 二项式性质)
  8. slack 开源系统_Slack团队聊天的5种开源替代品
  9. 《听后感-罗振宇2023“时间的朋友”跨年演讲》
  10. 微信订阅消息推送(记录)