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老皮!!!欢迎大家来找我探讨交流👀

相关推荐
程序员陆业聪6 小时前
绕过Frida/Xposed的最后防线:SVC直接系统调用与Native反Hook实战
android
程序员陆业聪6 小时前
WebView与原生JS交互:JSBridge生产级实现与安全防护
android
我命由我123459 小时前
Android 开发问题:MlKitException: An internal error occurred during initialization.
android·java·java-ee·android jetpack·android-studio·androidx·android runtime
Meteors.9 小时前
Android自定义 View 三核心方法详解
android
2501_916007479 小时前
前端开发常用软件与工具全面指南
android·ios·小程序·https·uni-app·iphone·webview
赏金术士10 小时前
Android Tinker 热修复集成与使用指南 1.9.15.2
android·热修复·tinker
2603_9541383911 小时前
安卓误删文件先别慌!5个实用小技巧指南教你补救
android·智能手机
波诺波13 小时前
5-SOFA可变形的3D物体 5-elasticity.scn
android
2501_9159090614 小时前
iOS应用性能优化:十大策略提升用户体验与开发效率
android·ios·小程序·https·uni-app·iphone·webview
G_dou_14 小时前
Flutter+OpenHarmony 实战:stopwatch 秒表应用
flutter·harmonyos