笔者第一次学flutter,踩坑不少,填坑也不少,不得不说官网在打包的这块留太多坑了。以下是笔者做好flutter项目中遇到的一些问题。
一、SDK篇
1、修改flutter.gradle 和 resolve_dependencies.gradle
路径:flutter/packages/flutter_tools/gradle/flutter.gradle
flutter/packages/flutter_tools/gradle/resolve_dependencies.gradle
1.1、flutter.gradle文件修改buildscript部分
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/groups/public' } } dependencies { classpath 'com.android.tools.build:gradle:3.5.0' } }
1.2、flutter.gradle文件修改 google() 和 jcenter() 还有 https://storage.googleapis.com/download.flutter.io
repositories { //google() //jcenter() maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } //maven { // url "https://storage.googleapis.com/download.flutter.io" //} maven {url 'http://download.flutter.io'} }
二、项目APP签名篇
2.1、进入java jdk安装目录下的bin文件夹,运行cmd命令
2.2、创建 keystore
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
2.3、在gradle中配置签名(这里和官方的不一样,官方的有坑,一直读取加载不到签名文件和密码)
官方打包所在坑位置:
通过编辑<app dir>/android/app/build.gradle文件为您的应用配置签名
替换:
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 'key' keyPassword '123456' storeFile file("D:/ProgramFile/flutter_word/key.jks") storePassword '123456' } } buildTypes { release { signingConfig signingConfigs.release } }
2.4、修改项目域名(考虑国内到墙问题)
2.4.1、修改项目目录下文件:/android/build.gradle文件中的 google() 和 jcenter()
buildscript:
buildscript { repositories { // google() // jcenter() maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } } dependencies { classpath 'com.android.tools.build:gradle:3.5.0' } }
allprojects :
allprojects { repositories { // google() // jcenter() maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } } }
3、开启混淆
默认情况下 flutter 不会开启 Android 的混淆。
如果使用了第三方 Java 或 Android 库,也许你想减小 apk 文件的大小或者防止代码被逆向破解。
3.1、配置混淆
创建 /android/app/proguard-rules.pro 文件,并添加以下规则:
#Flutter Wrapper -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; }
上述配置只混淆了 Flutter 引擎库,任何其他库(比如 Firebase)需要添加与之对应的规则。
3.2、开启混淆/压缩
打开 /android/app/build.gradle 文件,定位到 buildTypes 块。
在 release 配置中将 minifyEnabled 和 useProguard 设为 true,再将混淆文件指向上一步创建的文件。
android { ... buildTypes { release { signingConfig signingConfigs.release minifyEnabled true useProguard true } } }
3.3、以上改好之后执行 flutter clean 清下缓存
flutter clean
四、构建一个发布版(release)APK
本节介绍如何构建发布版(release)APK。如果您完成了前一节中的签名步骤,则会对APK进行签名。
使用命令行:
cd 项目目录 (为您的工程目录).
运行flutter build apk (flutter build 默认会包含 --release选项).
flutter build apk
打包好的发布APK位于项目目录下/build/app/outputs/apk/release/app-release.apk。
以下即为打包成功式例:
来看文件夹下文件:
文章评论(1)
红酥手 黄藤酒 2020-11-20 09:33:28
很棒,谢谢大神回复