Flutter Android打包环境配置完整指南
Flutter Android打包环境配置完整指南
一、环境准备
1.1 系统要求
最低配置:
- CPU: 4核心及以上
- 内存: 8GB RAM(建议16GB)
- 磁盘: 10GB可用空间(建议20GB以上)
- 系统: Ubuntu 22.04 LTS
- CPU: 8核心及以上
- 内存: 16GB RAM
- 磁盘: 50GB SSD
推荐配置:
1.2 检查系统环境
# 检查系统版本
lsb_release -a
# 检查CPU架构(必须是x86_64或arm64)
uname -m
# 检查内存
free -h
# 检查磁盘空间
df -h
二、安装Java JDK
2.1 安装OpenJDK 17
# 更新软件包
sudo apt update
# 安装OpenJDK 17
sudo apt install -y openjdk-17-jdk
# 验证安装
java -version
javac -version
# 设置JAVA_HOME
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 验证JAVA_HOME
echo $JAVA_HOME
2.2 配置Java环境变量
# 编辑环境变量文件
sudo tee /etc/environment << 'EOF'
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$JAVA_HOME/bin"
EOF
source /etc/environment
三、安装Android SDK
3.1 安装命令行工具
# 创建Android SDK目录
mkdir -p $HOME/android-sdk
cd $HOME/android-sdk
# 下载Android命令行工具
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
# 解压
unzip commandlinetools-linux-11076708_latest.zip
# 创建必要目录
mkdir -p cmdline-tools/latest
mv cmdline-tools/* cmdline-tools/latest/ 2>/dev/null || true
# 清理
rm commandlinetools-linux-11076708_latest.zip
3.2 配置环境变量
# 添加Android SDK环境变量
tee -a ~/.bashrc << 'EOF'
# Android SDK
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools
EOF
source ~/.bashrc
# 验证安装
echo $ANDROID_HOME
sdkmanager --version
3.3 安装必要的SDK组件
# 接受 licenses
yes | sdkmanager --licenses
# 安装Android SDK Build-Tools
sdkmanager "build-tools;34.0.0"
# 安装Android SDK Platform
sdkmanager "platforms;android-34"
# 安装Android SDK Platform-Tools
sdkmanager "platform-tools"
# 查看已安装组件
sdkmanager --list_installed
3.4 配置Gradle(可选)
# 安装Gradle(如果需要特定版本)
sudo apt install -y gradle
# 或下载指定版本
wget https://services.gradle.org/distributions/gradle-8.4-bin.zip
unzip gradle-8.4-bin.zip -d /opt/
# 配置环境变量
tee -a ~/.bashrc << 'EOF'
# Gradle
export GRADLE_HOME=/opt/gradle-8.4
export PATH=$GRADLE_HOME/bin:$PATH
EOF
source ~/.bashrc
# 验证安装
gradle --version
四、安装Flutter SDK
4.1 下载Flutter SDK
# 创建Flutter安装目录
sudo mkdir -p /opt/flutter
cd /opt/flutter
# 下载Flutter SDK(使用清华源)
git clone https://mirrors.tuna.tsinghua.edu.cn/git/flutter.git -b stable /opt/flutter
# 或下载预编译包
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.19.0-stable.tar.xz
tar -xf flutter_linux_3.19.0-stable.tar.xz
4.2 配置Flutter环境变量
# 添加Flutter到PATH
tee -a ~/.bashrc << 'EOF'
# Flutter
export FLUTTER_HOME=/opt/flutter
export PATH=$FLUTTER_HOME/bin:$PATH
EOF
source ~/.bashrc
# 验证安装
flutter --version
4.3 运行Flutter doctor
# 检查Flutter环境
flutter doctor -v
# 常见问题及解决
# 1. Android license未接受
flutter doctor --android-licenses
# 2. Android SDK未找到
export ANDROID_HOME=$HOME/android-sdk
# 3. Gradle未找到
export GRADLE_HOME=/opt/gradle-8.4
五、配置Android打包环境
5.1 创建签名密钥
# 创建密钥存放目录
mkdir -p $HOME/android-keystore
# 使用keytool生成密钥库
keytool -genkeypair \
-v \
-storetype PKCS12 \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-keystore $HOME/android-keystore/release.keystore \
-alias release \
-storepass your_store_password \
-keypass your_key_password
参数说明:
- `-validity 10000`: 密钥有效期(天)
- `-keystore`: 密钥库文件路径
- `-alias`: 密钥别名
- `-storepass`: 密钥库密码
- `-keypass`: 密钥密码
5.2 配置签名信息
在Flutter项目的 android/key.properties 文件中配置:
storePassword=your_store_password
keyPassword=your_key_password
keyAlias=release
storeFile=$HOME/android-keystore/release.keystore
或在 android/app/build.gradle 中配置:
android {
signingConfigs {
release {
keyAlias "release"
keyPassword "your_key_password"
storeFile file("$HOME/android-keystore/release.keystore")
storePassword "your_store_password"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
5.3 配置Gradle包装器
在Flutter项目中:
cd your_flutter_project
# 生成Gradle wrapper
flutter build apk --debug
# 或手动生成
gradle wrapper --gradle-version=8.4
六、构建APK
6.1 debug版本
# 构建debug APK
flutter build apk --debug
# 构建web的debug版本
flutter build web --debug
6.2 release版本
# 构建release APK
flutter build apk --release
# 构建appbundle(AAB格式,适合Google Play)
flutter build appbundle --release
# 构建特定架构的APK
flutter build apk --release --split-per-abi
6.3 构建web版本
# 构建web版本
flutter build web --release
# 查看构建产物
ls -la build/web/
6.4 常见构建问题
1. 内存不足
# 增加JVM内存
export GRADLE_OPTS="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"
2. Gradle下载超时
# 配置国内镜像
mkdir -p ~/.gradle
tee ~/.gradle/gradle.properties << 'EOF'
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.parallel=true
org.gradle.caching=true
EOF
# 添加国内镜像
mkdir -p ~/.gradle/init.d
tee ~/.gradle/init.d/mirror.gradle << 'EOF'
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://mirrors.aliyun.com/nexus/content/repositories/gradle/' }
}
}
EOF
3. Android SDK未找到
# 确保ANDROID_HOME正确
export ANDROID_HOME=$HOME/android-sdk
# 验证SDK路径
ls $ANDROID_HOME
# 重新运行doctor
flutter doctor -v
七、优化构建配置
7.1 Flutter build.gradle优化
android {
buildTypes {
release {
// 启用代码混淆
minifyEnabled true
// 移除未使用的资源
shrinkResources true
// 配置ProGuard
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// 优化APK大小
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
7.2 ProGuard规则
在 android/app/proguard-rules.pro 中添加:
# Flutter相关的ProGuard规则
-keep class io.flutter.** { *; }
-keep class com.tencent.bugly.** { *; }
-keep class com.squareup.okhttp3.** { *; }
-keep class okhttp3.** { *; }
-keep class okio.** { *; }
# Dart相关的ProGuard规则
-keep class dart._internal.** { *; }
-keep class package:dispatch.** { *; }
# 保持枚举类
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
7.3 资源优化
# 使用图片压缩工具
# 安装tinypng-cli
npm install -g tinypng-cli
# 压缩图片
tinypng --directory assets/images/
# 使用SVG替代大图片
八、CI/CD自动化构建
8.1 GitHub Actions配置
在项目根目录创建 .github/workflows/build.yml:
name: Android Build
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.19.0'
- name: Install dependencies
run: flutter pub get
- name: Build APK
run: flutter build apk --release
env:
ANDROID_HOME: /opt/android-sdk
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
- name: Upload APK
uses: actions/upload-artifact@v3
with:
name: app-release.apk
path: build/app/outputs/flutter-apk/app-release.apk
8.2 GitLab CI配置
创建 .gitlab-ci.yml:
stages:
- build
variables:
FLUTTER_VERSION: "3.19.0"
ANDROID_SDK_ROOT: "/opt/android-sdk"
build:
stage: build
image: cirrusci/flutter:$FLUTTER_VERSION
script:
- flutter pub get
- flutter build apk --release
artifacts:
paths:
- build/app/outputs/flutter-apk/
expire_in: 1 week
九、常见问题解决
9.1 编码问题
# 设置UTF-8编码
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
9.2 权限问题
# 修复Android SDK权限
sudo chown -R $USER:$USER $ANDROID_HOME
sudo chmod -R u+w $ANDROID_HOME
9.3 Gradle内存不足
# 增加Gradle内存
export GRADLE_OPTS="-Xmx4g -XX:MaxMetaspaceSize=512m"
9.4 SDK组件缺失
# 检查缺失组件
flutter doctor -v
# 安装缺失组件
sdkmanager "platforms;android-34"
sdkmanager "build-tools;34.0.0"
9.5 Flutter依赖问题
# 清理并重新获取依赖
flutter clean
flutter pub cache repair
flutter pub get
十、打包最佳实践
10.1 版本管理
在 pubspec.yaml 中配置版本:
version: 1.0.0+1
# version: <major>.<minor>.<patch>+<build_number>
10.2 构建脚本
创建 build.sh 自动化构建脚本:
#!/bin/bash
# 配置变量
FLUTTER_HOME=/opt/flutter
ANDROID_HOME=$HOME/android-sdk
BUILD_TYPE=release
# 设置环境变量
export $FLUTTER_HOME
export $ANDROID_HOME
# 进入项目目录
cd /path/to/your/project
# 拉取最新代码
git pull
# 获取依赖
flutter pub get
# 清理构建
flutter clean
# 构建APK
flutter build apk --$BUILD_TYPE
# 构建AAB
flutter build appbundle --$BUILD_TYPE
echo "构建完成!"
echo "APK路径: build/app/outputs/flutter-apk/app-release.apk"
echo "AAB路径: build/app/outputs/bundle/release/app-release.aab"
10.3 多渠道打包
在 android/app/build.gradle 中配置多渠道:
android {
flavorDimensions "channel"
productFlavors {
prod {
dimension "channel"
applicationIdSuffix ""
versionNameSuffix ""
}
dev {
dimension "channel"
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
}
test {
dimension "channel"
applicationIdSuffix ".test"
versionNameSuffix "-test"
}
}
}
构建指定渠道:
flutter build apk --release --flavor prod
十一、总结
本文详细介绍了在Ubuntu 22.04上配置Flutter Android打包环境的完整流程。
核心要点:
1. ✅ 安装Java JDK 17 2. ✅ 配置Android SDK和命令行工具 3. ✅ 安装Flutter SDK 4. ✅ 配置签名密钥 5. ✅ 构建APK/AAB/web版本 6. ✅ 优化构建配置 7. ✅ 配置CI/CD自动化 8. ✅ 常见问题解决
下一步学习:
- 深入了解Flutter性能优化
- 学习Flutter插件开发
- 掌握Flutter测试策略
- 了解Flutter Web部署
- Flutter官方文档:https://docs.flutter.dev/
- Android SDK文档:https://developer.android.com/studio
- Gradle文档:https://docs.gradle.org/
- ProGuard规则:https://www.guardsquare.com/proguard
相关资源:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







