flutter项目 发布Google Play

首次发布Flutter应用到Google Play的完整指南

本文将详细介绍如何首次将Flutter应用发布到Google Play商店。对于iOS开发者,也可以使用AppUploader工具来简化iOS应用的上传流程,但本文主要聚焦Android平台的操作。

准备工作

  1. 登录Google Play控制台
  2. 选择需要上传版本的项目并进入发布版本页面

签名密钥设置

重要提示:不要使用Google自动生成的密钥,选择"使用其他密钥"选项。

密钥生成步骤

  1. 新建专用文件夹存储相关文件
  2. 下载加密公钥和PEPK工具到该文件夹
  3. 安装Java Development Kit (JDK)

环境变量配置(Windows示例)

  1. 打开控制面板>系统和安全>系统
  2. 点击"高级系统设置"
  3. 在"系统属性"窗口中点击"环境变量"
  4. 在系统变量中找到Path并编辑
  5. 添加JDK的bin目录路径(如C:\Program Files\Java\jdk-11\bin)

生成签名密钥

在文件夹中打开命令窗口运行:

vbnet 复制代码
keytool -genkey -v -keystore D:\keystore\my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias

参数说明:

  • -keystore:密钥库文件路径
  • -alias:密钥别名
  • 其他参数保持默认即可

生成Google Play需要的压缩文件

使用pepk.jar工具导出密钥:

vbnet 复制代码
java -jar D:\keystore\pepk.jar --keystore=D:\keystore\my-release-key.jks --alias=my-key-alias --output=D:\keystore\output.zip --include-cert --rsa-aes-encryption --encryption-key-path=D:\keystore\encryption_public_key.pem

项目配置更新

修改android/app/build.gradle文件:

arduino 复制代码
android {
    signingConfigs {
        release {
            keyAlias 'my-key-alias'
            keyPassword 'your-key-password'
            storeFile file('D:\\keystore\\my-release-key.jks')
            storePassword 'your-store-password'
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
            shrinkResources false
        }
    }
}

密钥验证与管理

arduino 复制代码
// 检查密钥信息
keytool -list -v -keystore D:\keystore\my-release-key.jks

// 删除密钥(如需重新生成)
del D:\keystore\my-release-key.jks

构建与上传

  1. 生成App Bundle:
arduino 复制代码
flutter build appbundle --release
  1. 在Google Play控制台上传生成的aab文件

对于iOS开发者,AppUploader提供了类似的一站式解决方案,可以简化iOS应用的上传和发布流程。但Android开发者仍需按照上述步骤完成Google Play的发布流程。

提示:发布前请确保已满足所有Google Play的政策要求,并完成必要的应用信息和内容评级设置。

相关推荐
步行cgn1 分钟前
MyBatis 多参数绑定错误:Parameter 'name' not found 详解与解决方案
后端
步行cgn5 分钟前
MyBatis 对单个简单类型参数的默认处理详解
后端
吃饱了得干活6 分钟前
Java并发安全:看这一篇就懂了!
java·后端·面试
早点睡9757 分钟前
向量检索原理入门:从 ANN 到 HNSW
后端·面试
Augustzero8 分钟前
为什么高性能调度器都在“偷任务”?从无锁队列看懂工作窃取
c++·后端
Leo28211 分钟前
异步任务链路如何不断链:基于 OpenTelemetry 的 Trace 设计
后端
技术长镜头14 分钟前
别再死记 Record、Gap、Next-Key:沿一条 SQL 看懂 InnoDB 锁
后端·mysql
晚安code15 分钟前
Java四大函数式接口一篇讲透:配上Stream流式计算处理集合
后端
晴殇i25 分钟前
最近在 Github 名字叫“马尾辫”,这个真的很有趣看到头像
前端·后端·开源
IT_陈寒1 小时前
Vite打包时静态资源404?加个斜杠就能解决
前端·人工智能·后端