笔者第一次学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。
以下即为打包成功式例:

来看文件夹下文件:

关于简忆
简忆诞生的故事



粤ICP备16092285号
文章评论(1)
红酥手 黄藤酒 2020-11-20 09:33:28
很棒,谢谢大神回复