Flutter安卓项目打包完整指南:从开发到发布
Flutter安卓项目打包完整指南:从开发到发布
一、环境准备
1.1 安装Flutter SDK
# 下载Flutter SDK
git clone https://github.com/flutter/flutter.git -b stable $HOME/flutter-sdk
# 配置环境变量
echo 'export PATH="$HOME/flutter-sdk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 验证安装
flutter doctor
# 安装Android证书
flutter doctor --android-licenses
1.2 安装Android Studio
# 下载Android Studio
wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.1.1.21/android-studio-2023.1.1.21-linux.tar.gz
# 解压
tar -xzf android-studio-2023.1.1.21-linux.tar.gz
# 启动
./android-studio/bin/studio.sh
1.3 配置Android SDK
# 设置ANDROID_HOME
echo 'export ANDROID_HOME=$HOME/Android/Sdk' >> ~/.bashrc
echo 'export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools' >> ~/.bashrc
source ~/.bashrc
# 安装SDK组件
sdkmanager --licenses
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
二、创建Flutter项目
2.1 新建项目
# 创建新项目
flutter create my_flutter_app
# 进入项目目录
cd my_flutter_app
# 运行测试
flutter run
2.2 项目结构
my_flutter_app/
├── android/ # Android原生项目
├── ios/ # iOS原生项目
├── lib/ # Flutter代码
│ └── main.dart # 入口文件
├── web/ # Web项目
├── test/ # 测试代码
├── pubspec.yaml # 依赖配置
└── pubspec.lock # 锁定依赖版本
三、打包配置
3.1 修改应用名称
# android/app/src/main/AndroidManifest.xml
<application
android:label="我的应用"
android:name=".MainApplication"
android:icon="@mipmap/ic_launcher">
3.2 配置应用图标
# 使用flutter_launcher_icons
flutter pub add flutter_launcher_icons
# 配置pubspec.yaml
flutter_icons:
android: "ic_launcher"
image_path: "assets/icon.png"
# 生成图标
flutter pub run flutter_launcher_icons:main
3.3 配置启动图
flutter pub add flutter_native_splash
# 配置pubspec.yaml
flutter_native_splash:
color: "#FFFFFF"
image: "assets/splash.png"
# 生成启动图
flutter pub run flutter_native_splash:create
四、Release打包
4.1 构建Release APK
# 进入Android目录
cd android
# 构建Release APK
./gradlew assembleRelease
# APK位置
# android/app/build/outputs/apk/release/app-release.apk
4.2 构建Debug APK
# 构建Debug APK
flutter build apk --debug
# 构建Release APK
flutter build apk --release
# 构建App Bundle(推荐,体积更小)
flutter build appbundle --release
4.3 Gradle配置优化
# android/app/build.gradle
android {
signingConfigs {
release {
// 签名配置
}
}
buildTypes {
release {
// 混淆配置
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// 优化构建
splits {
abi {
enable true
reset()
universalApk true
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}
}
五、签名配置
5.1 生成签名密钥
# 生成 keystore 文件
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
# 签名参数
# 密钥库密码:your_password
# 密钥密码:your_password
5.2 配置签名
# android/key.properties
storePassword=your_password
keyPassword=your_password
keyAlias=my-key-alias
storeFile=release.jks
# android/app/build.gradle
android {
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
六、优化APK
6.1 减小APK体积
// 使用flutter build --split-debug-info
flutter build apk --release --split-debug-info
// 启用R8混淆
flutter build apk --obfuscate
6.2 优化图片资源
# 使用TinyPNG压缩图片
# 使用WebP格式
# 移除未使用的资源
6.3 配置ABI分割
// 只打包需要的架构
flutter build apk --target-platform android-arm,android-arm64
七、多渠道打包
7.1 配置Flavor
// android/app/build.gradle
android {
flavorDimensions "version"
productFlavors {
googleplay {
dimension "version"
applicationIdSuffix ".googleplay"
versionNameSuffix "-googleplay"
}
huawei {
dimension "version"
applicationIdSuffix ".huawei"
versionNameSuffix "-huawei"
}
}
}
7.2 打包命令
# Google Play渠道
flutter build apk --google-play
# 华为渠道
flutter build apk --huawei
# 全部渠道
flutter build apk --flavors googleplay,huawei
八、持续集成
8.1 GitHub Actions
# .github/workflows/android.yml
name: Android CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.16.0'
- name: Install dependencies
run: flutter pub get
- name: Build APK
run: flutter build apk --release
- name: Upload APK
uses: actions/upload-artifact@v3
with:
name: apk
path: build/app/outputs/flutter-apk/app-release.apk
8.2 Fastlane配置
# Fastfile
default_platform(:android)
platform :android do
desc "Build and release to Google Play"
lane :release do
gradle(task: "assembleRelease")
upload_to_play_store
end
desc "Build debug APK"
lane :debug do
gradle(task: "assembleDebug")
end
end
九、常见问题
9.1 签名失败
# 错误: Keystore was tampered with, or password was incorrect
# 解决方法:
# 1. 检查密码是否正确
# 2. 确认密钥别名是否正确
# 3. 重新生成keystore
9.2 构建超时
# 错误: Gradle build timeout
# 解决方法:
# 1. 增加内存:org.gradle.jvmargs=-Xmx2048m
# 2. 使用国内镜像源
# 3. 清理构建缓存:flutter clean
9.3 SDK版本问题
# 错误: SDK version mismatch
# 解决方法:
# 1. 更新Flutter SDK
# 2. 检查pubspec.yaml的SDK版本要求
# 3. 运行flutter doctor检查环境
十、总结
本文介绍了Flutter安卓项目打包的完整流程:
✅ 环境准备和配置 ✅ 项目创建和结构 ✅ Release打包和签名 ✅ APK优化和多渠道打包 ✅ 持续集成配置 ✅ 常见问题解决
关键要点:
相关资源:
- Flutter官网:https://flutter.dev
- Flutter中文网:https://flutter.cn
- Android开发者:https://developer.android.com
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







