Flutter项目打包编译成apk

前言:网上看过很多flutter打包apk的教程,但对于一些新手来说,基本的apk签名操作也还不熟悉,所以在写完一个flutter项目之后将我的打包经验记录下来。

第一步:生成秘钥文件

进入电脑cmd输入: 

flutter doctor -v

找到如下内容。复制并cd 进入Java binary at: 后面的路径(删除 \java),我的目录就是: D:\Android\studio\jre\bin

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at D:\Android\SDK\commandlinetools-win-9123335_latest
    • Platform android-33, build-tools 33.0.1
    • ANDROID_HOME = D:\Android\SDK\commandlinetools-win-9123335_latest
    • Java binary at: D:\Android\studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

在电脑里创建一个keys文件夹,用于存放生成的秘钥文件。(如 D:\Android\flutter\keys

keytool -genkey -v -keystore %userprofile%\keystore.jks ^
        -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 ^
        -alias upload

%userprofile% 修改成上面创建的目录(D:\Android\flutter\keys),然后将上面的命令复制到cmd中(此时cmd中的路径应该为最开始cd进入的目录,也就是 D:\Android\studio\jre\bin),执行命令会需要输入秘钥库口令,输入两遍口令之后,剩下的全敲回车,在最后核对填写是否正确的时候输入: yes 或者 y ,秘钥即创建成功。

第二步:创建秘钥文件

进入Flutter项目中,在 [项目名]/android/ 目录下创建一个名为 key.properties 的文件,将一下内容复制进去。

storePassword=生成秘钥时输入的秘钥口令
keyPassword=生成秘钥时输入的秘钥口令
keyAlias=upload
storeFile=秘钥所在的路径(比如我的就是: D:/Android/flutter/keys/keystore.jks 注意不是反斜线)

第三步:配置秘钥文件

步骤一:

在 [项目名]/android/app/build.gradle 文件中将以下前四行代码复制到 Android 前面。

   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

    //注意在android前面粘贴以上代码
   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 keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

第四步:开始打包编译

在Flutter项目路径终端上运行命令即可打包成功

flutter build apk --split-per-abi
PS D:\Android\flutter\Flutter-Project> flutter build apk --split-per-abi
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!

Running Gradle task 'assembleRelease'...                           23.9s
√  Built build\app\outputs\flutter-apk\app-armeabi-v7a-release.apk (6.7MB).
√  Built build\app\outputs\flutter-apk\app-arm64-v8a-release.apk (7.2MB).
√  Built build\app\outputs\flutter-apk\app-x86_64-release.apk (7.3MB)

参考文档:Build and release an Android app | Flutter

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值