flutter项目 发布Google Play

431 阅读5分钟

本文章只记录项目发布Google Play第一次上传版本的步骤,其他的前提条件请自行百度(例如:注册谷歌开发者、发布填写的各种信息)

先登录谷歌控制台

play.google.com/console/u/0…

进入上传版本页面

选择你需要上传版本的项目并进入发布版本的页面,例如下图

image.png

点击选择签名密钥按钮,会出现弹窗,如下图

image.png

不要使用谷歌生成的密钥,点击 使用其他密钥

点击之后会弹窗选择,我这里用的第三个,按照步骤去完成就可以了

image.png

这里详细讲讲实现步骤

新建一个文件夹,用来存储下载、生成的文件(这样比较好操作)

下载加密公钥和PEPK工具到文件夹

去安装Java Development Kit (JDK),选择适合你操作系统的JDK版本进行下载安装即可

下载地址:www.oracle.com/cn/java/tec…

安装好Java JDk后 要配置系统环境变量

以Windows为例子,其他操作系统自行百度

打开控制面板,选择“系统和安全”,然后选择“系统”。

点击“高级系统设置”。

在“系统属性”窗口中,点击“环境变量”。

在“系统变量”部分,找到并选择Path,然后点击“编辑”。

点击“新建”并添加JDK的bin目录路径,例如C:\Program Files\Java\jdk-11\bin。

点击“确定”保存更改。

4.5 生成签名密钥

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

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

命令解释:

keytool:这是一个 Java 工具,用于管理密钥和证书。它通常与 Java Development Kit (JDK) 一起分发。

-genkey:这个选项表示生成一个密钥对(一个公钥和一个私钥),并创建一个自签名证书。

-v:启用详细输出。执行命令时,会显示生成密钥对和证书的详细信息。

-keystore D:\keystore\my-release-key.jks:指定密钥库文件的路径和名称。

在这个例子中,密钥库文件将被创建并保存在 D:\keystore\my-release-key.jks。如果文件路径不存在,它将被创建。

-keyalg RSA:指定密钥对的算法。在这个例子中,使用 RSA 算法生成密钥对。

-keysize 2048:指定密钥的大小(以位为单位)。在这个例子中,密钥的大小是 2048 位。这是一个常见的密钥大小,提供了良好的安全性。

-validity 10000:指定证书的有效期(以天为单位)。在这个例子中,证书的有效期是 10,000 天,大约是 27 年。

-alias my-key-alias:指定密钥对的别名。别名是一个用于标识密钥对的字符串。在这个例子中,别名是 my-key-alias。

所以一般来说你需要修改的地方就是keystorealias的值,改成你的存储路径和文件名、改成你想要的别名

生成签名密钥的命令交互

image.png

一般来说会让你输入9次,下面我详细解释:

第一次是让你输入密钥库密码的值、第二次是确认密钥库密码的值

第三次到第八次无所谓,随意输入即可,我是依次输入1-6

第九次是让你确认输入是否有误,输入y确认后即可生成密钥

提示一下:截止2024/07/25 ,成功生成了签名密钥后,密钥密码默认和密钥库密码一样

4.6 生成Google Play需要的压缩文件

就是下图这个

image.png

使用 pepk.jar 工具来导出 Android 应用的密钥库文件并加密密钥,以便上传到 Google Play 进行 App Signing。

在命令窗口执行命令

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

命令解释:

java -jar D:\keystore\pepk.jar:这是运行一个 Java 应用程序的命令。-jar 选项指定要运行的 JAR 文件,这里是 pepk.jar,用于导出和加密密钥。(将D:\keystore\pepk.jar改为你的pepk.jar文件路径)

--keystore=D:\keystore\my-release-key.jks:指定要使用的密钥库文件路径。在这个例子中,密钥库文件位于 D:\keystore\my-release-key.jks。(将D:\keystore\my-release-key.jks改为上一步你生成的密钥文件的路径)

--alias=my-key-alias:指定密钥库中密钥对的别名。在这个例子中,别名是 my-key-alias。(将my-key-alias改为你的密钥别名)

--output=D:\keystore\output.zip:指定输出文件的路径和名称。在这个例子中,输出文件将保存为 D:\keystore\output.zip。(将D:\keystore\output.zip改成你想要保存的地址和文件名)

--include-cert:这个选项指示 pepk.jar 包括证书链在内的密钥导出。

--rsa-aes-encryption:指定使用 RSA 和 AES 加密算法对密钥进行加密。

--encryption-key-path=D:\keystore\encryption_public_key.pem:指定加密密钥的公钥文件路径。在这个例子中,公钥文件位于 D:\keystore\encryption_public_key.pem。

(将D:\keystore\encryption_public_key.pem改为你的encryption_public_key.pem文件路径)

命令执行完成后会生成一个压缩文件,将这个压缩上传即可,下图所示

image.png

5 更新项目配置

找到你的flutter项目,找到android/app/build.gradle文件,更新配置

android {
    ...
    // Flutter发布Android APP到Google Play 需要的配置
    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
            // 如果需要,启用 ProGuard
            // proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

6 检查密钥信息和删除密钥

// 检查密钥信息
keytool -list -v -keystore D:\keystore\my-release-key.jks
// 删除密钥
del D:\keystore\my-release-key.jks

D:\keystore\my-release-key.jks改成你想要查看、删除的密钥的路径即可

查看密钥信息的详细内容:

image.png

去谷歌控制台 点击左侧导航栏的发布>设置>应用签名 查看密钥是否和我们生成的密钥一样(对比证书指纹是否一致即可)

如果不一致就得重新生成密钥了(执行删除密钥的命令,然后重新执行4.5-4.6的操作)

7 构建 App Bundle

当确认过密钥信息的证书指纹与谷歌的一致后,就在你的flutter项目的终端中运行命令,生成aab文件

flutter build appbundle --release

8 上传aab文件

回到谷歌控制台,如下图位置

image.png

将生成的aab文件上传即可