Ubuntu上Flutter项目打包指南(Android/桌面端)
Ubuntu系统因缺少macOS环境,无法直接完成iOS应用的完整签名与打包(需通过macOS设备完成后续步骤),但可顺利打包Android应用及Linux桌面端应用。以下是具体流程:
安装Flutter SDK
从Flutter官网下载稳定版SDK,解压至/opt/flutter(或其他目录),并在~/.bashrc中添加环境变量:
echo 'export PATH="$PATH:/opt/flutter/bin"' >> ~/.bashrc
source ~/.bashrc
运行flutter doctor检查环境完整性(需安装Android Studio、Android SDK、Gradle等依赖)。
配置Android签名(仅Android应用需要)
若需发布Android应用,需提前生成签名密钥库(keystore):
keytool -genkey -v -keystore ~/my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
将密钥库路径添加至android/key.properties文件:
storePassword=<你的密码>
keyPassword=<你的密码>
keyAlias=my-key-alias
storeFile=../my-release-key.keystore
配置pubspec.yaml
确保项目依赖(如flutter/material.dart)及版本号(version: 1.0.0+1)正确,运行flutter pub get获取依赖。
在项目根目录运行以下命令,生成单任务APK(支持所有CPU架构,文件较大):
flutter build apk --release
或生成分架构APK(减小文件体积,需适配不同设备):
flutter build apk --split-per-abi
生成的APK文件路径:
build/app/outputs/flutter-apk/app-release.apkbuild/app/outputs/apk/release/app-armeabi-v7a-release.apk、app-arm64-v8a-release.apk。若未使用key.properties自动签名,需手动签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/my-release-key.keystore build/app/outputs/flutter-apk/app-release.apk my-key-alias
验证签名:
jarsigner -verify -verbose -certs build/app/outputs/flutter-apk/app-release.apk
使用zipalign工具优化APK,提升运行效率:
zipalign -v 4 build/app/outputs/flutter-apk/app-release.apk optimized-app-release.apk
若需将Flutter项目打包为Linux可执行文件,需安装Linux开发工具:
sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev
运行以下命令生成桌面应用:
flutter build linux --release
生成的桌面应用位于build/linux/x64/release/bundle/目录下,包含可执行文件及依赖。
Ubuntu无法直接完成iOS应用的签名与打包,需通过以下步骤间接实现:
flutter build ios --release,生成iOS应用框架(位于build/ios/iphoneos/Runner.app)。Runner.app传输至macOS电脑。ios/Runner.xcworkspace(Xcode)。Runner项目→Signing & Capabilities,配置Team(Apple开发者账户)及Provisioning Profile。Product→Archive,生成归档文件。Distribute App,上传至App Store Connect或导出IPA文件。