flutter用终端命令打包安卓apk

本人打包时,flutter版本是3.13.5,这个影响不大,flutter的打包跟安卓原生打包其实是一样的,只是flutter很多东西是比较常用命令去执行的,这次打包本人就是用命令去执行的,这样不管是用AndroidStudio还是VScode去开发,都是可以用的。

一、生成签名文件.jks

终端中执行命令

c 复制代码
keytool -genkey -v -keystore test.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

test.jks命令中的这个是签名文件的名称,这个名称根据项目执行修改就行,自己起个名字就行

如果已经有了签名文件,就不需要这个步骤。

执行完命令会出现如下一步步的引导内容,根据自己的情况输入即可,

执行完会生成后缀为.jks的签名文件,并且会报这个Warning:

JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore test.jks -destkeystore test.jks -deststoretype pkcs12" 迁移到行业标准格式

这个提示是因为jks的行业标准格式已经变为pkcs12了,只要把提示的里的"keytool -importkeystore -srckeystore test.jks -destkeystore test.jks -deststoretype pkcs12"命令复制到终端里执行就可以了。

二、在项目中使用签名文件

在flutter项目的android文件夹下创建key.properties文件。文件里写入如下信息:

storePassword=123456(第一步中输入的密钥库口令,也就是签名文件的密码)keyPassword=123456(第一步中输入的密钥库口令,也就是签名文件的密码)keyAlias=keyAlias(为第一步中输入的签名文件的别名)

storeFile=/Users/test.jks(签名文件的绝对路径)

三、在gradle中配置签名(项目/android/app/中的build.gradle)

文件中在android{}上方添加如下内容:

dart 复制代码
def keystorePropertiesFile = rootProject.file("key.properties")

def keystoreProperties =new Properties()

if (keystorePropertiesFile.exists()) {

   keystorePropertiesFile.withReader('UTF-8') {
    reader-> keystoreProperties.load(reader)

 }

}

这块内容是载入key.properties文件,这块内容可以模仿项目中原有的写法,本人当前创建的最新项目里,原有的载入local.properties文件是这种写法,网上有其他版本的写法,能用就行都是可以的,但是本人喜欢用最新的原项目自己生成的这种写法。

android{}里添加如下内容

dart 复制代码
signingConfigs{

    release{

        keyAliaskeystoreProperties\['keyAlias'\]

        keyPasswordkeystoreProperties\['keyPassword'\]

        storeFile file(keystoreProperties\['storeFile'\])

        storePasswordkeystoreProperties\['storePassword'\]

    }

}

并且修改签名版本为

dart 复制代码
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,切换成我们配置的release版本

        signingConfig signingConfigs.release

    }

}

四、在终端中执行打包命令:

dart 复制代码
flutter build apk --release

--release可不写。

👀关注公众号:Android老皮!!!欢迎大家来找我探讨交流👀

相关推荐
后端码匠2 小时前
MySQL 8.0安装(压缩包方式)
android·mysql·adb
梓仁沐白3 小时前
Android清单文件
android
董可伦6 小时前
Dinky 安装部署并配置提交 Flink Yarn 任务
android·adb·flink
每次的天空6 小时前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
恋猫de小郭6 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin
明似水7 小时前
2025年Flutter初级工程师技能要求
flutter
flying robot8 小时前
小结:Android系统架构
android·系统架构
xiaogai_gai8 小时前
有效的聚水潭数据集成到MySQL案例
android·数据库·mysql
鹅鹅鹅呢9 小时前
mysql 登录报错:ERROR 1045(28000):Access denied for user ‘root‘@‘localhost‘ (using password Yes)
android·数据库·mysql
在人间负债^9 小时前
假装自己是个小白 ---- 重新认识MySQL
android·数据库·mysql