Appearance
第15章:Flutter 应用打包
15.1 打包前准备
15.1.1 项目配置
应用图标
准备图标文件:
- 准备不同尺寸的应用图标,推荐使用 1024x1024 的 PNG 图片
- 可以使用 Flutter Launcher Icons 插件自动生成不同尺寸的图标
配置 pubspec.yaml:
yaml
flutter:
uses-material-design: true
assets:
- images/
# 配置应用图标
icons:
android: "launcher_icon"
ios: true
image_path: "assets/icon/icon.png"- 运行命令生成图标:
bash
flutter pub run flutter_launcher_icons:main应用名称与版本号
在 pubspec.yaml 中配置应用名称和版本号:
yaml
name: my_app
description: A new Flutter application.
version: 1.0.0+1
environment:
sdk: ">=2.19.0 <3.0.0"
flutter:
uses-material-design: truename:应用名称version:版本号,格式为x.y.z+build,其中x.y.z是版本号,build是构建号
权限配置
Android 权限
在 android/app/src/main/AndroidManifest.xml 中配置权限:
xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 读写存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<application
android:label="My App"
android:icon="@mipmap/ic_launcher">
...
</application>
</manifest>iOS 权限
在 ios/Runner/Info.plist 中配置权限:
xml
<key>NSCameraUsageDescription</key>
<string>需要相机权限来扫描二维码</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要相册权限来选择图片</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要位置权限来提供附近的服务</string>15.2 Android 打包
15.2.1 生成签名文件
步骤 1:生成 keystore 文件
使用 keytool 命令生成签名文件:
bash
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias执行命令后,会提示输入密钥库密码、密钥密码、姓名、组织等信息。
步骤 2:配置签名信息
在 android/app/build.gradle 文件中添加签名配置:
txt
android {
...
defaultConfig {
...
}
signingConfigs {
release {
keyAlias 'my-key-alias'
keyPassword 'your-key-password'
storeFile file('my-release-key.jks')
storePassword 'your-keystore-password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
...
}
}
}步骤 3:移动签名文件
将生成的 my-release-key.jks 文件移动到 android/app 目录下。
15.2.2 打包 APK 文件
执行以下命令生成 APK 文件:
bash
flutter build apk生成的 APK 文件位于 build/app/outputs/flutter-apk/app-release.apk。
15.2.3 打包 AAB 文件
执行以下命令生成 AAB(Android App Bundle)文件:
bash
flutter build appbundle生成的 AAB 文件位于 build/app/outputs/bundle/release/app-release.aab。
15.3 iOS 打包
15.3.1 Xcode 配置
步骤 1:打开 iOS 项目
使用 Xcode 打开 ios/Runner.xcworkspace 文件。
步骤 2:配置 Bundle Identifier
在 Xcode 中,选择 Runner 项目,然后在 General 标签页中设置 Bundle Identifier。
步骤 3:配置签名
在 Signing & Capabilities 标签页中,选择 Automatically manage signing,然后选择您的开发团队。
15.3.2 证书配置
步骤 1:创建证书
- 登录 Apple Developer Portal
- 进入
Certificates, Identifiers & Profiles - 创建
Development和Distribution证书 - 下载证书并安装到 Keychain
步骤 2:创建 Provisioning Profile
- 在 Apple Developer Portal 中创建
Development和DistributionProvisioning Profile - 下载并安装到 Xcode
15.3.3 打包 IPA 文件
步骤 1:构建 Flutter 应用
执行以下命令构建 Flutter 应用:
bash
flutter build ios步骤 2:在 Xcode 中打包
- 在 Xcode 中,选择
Product > Archive - 等待构建完成后,在 Organizer 中选择构建的档案
- 点击
Distribute App - 选择
Ad Hoc或App Store Connect - 按照提示完成打包过程
生成的 IPA 文件可以通过 Xcode Organizer 导出。
15.4 打包常见问题排查
15.4.1 打包失败
问题 1:签名配置错误
症状:
- 构建失败,提示签名配置错误
- 找不到签名文件
解决方案:
- 检查
android/app/build.gradle中的签名配置 - 确保签名文件存在且路径正确
- 确保密码正确
问题 2:依赖冲突
症状:
- 构建失败,提示依赖冲突
- 版本不兼容
解决方案:
- 检查依赖版本,确保版本兼容
- 使用
flutter pub outdated查看过时的依赖 - 更新依赖到兼容版本
问题 3:资源文件错误
症状:
- 构建失败,提示资源文件找不到
- 资源文件格式错误
解决方案:
- 检查
pubspec.yaml中的资源配置 - 确保资源文件存在且路径正确
- 检查资源文件格式是否正确
15.4.2 图标不显示
症状:
- 应用安装后,图标不显示或显示默认图标
解决方案:
- 检查图标文件是否正确生成
- 确保图标文件大小和格式正确
- 清理构建缓存,重新构建
15.4.3 权限错误
症状:
- 应用运行时提示权限错误
- 权限申请不生效
解决方案:
- 检查 AndroidManifest.xml 或 Info.plist 中的权限配置
- 确保权限描述清晰
- 在代码中正确申请运行时权限
15.4.4 应用无法安装
症状:
- 应用无法安装到设备
- 安装后崩溃
解决方案:
- 检查设备兼容性
- 检查应用签名是否正确
- 检查应用权限是否正确配置
- 查看应用日志,分析崩溃原因
15.5 应用发布
15.5.1 Android 应用发布
发布到应用宝
注册开发者账号:
- 访问 应用宝开发者平台
- 注册开发者账号并完成认证
创建应用:
- 登录开发者平台
- 点击 "创建应用"
- 填写应用信息,上传应用图标和截图
上传应用:
- 上传 AAB 或 APK 文件
- 填写应用描述、更新日志等信息
提交审核:
- 提交应用进行审核
- 等待审核通过
发布应用:
- 审核通过后,发布应用
发布到华为应用市场
注册开发者账号:
- 访问 华为开发者联盟
- 注册开发者账号并完成认证
创建应用:
- 登录开发者联盟
- 点击 "应用服务 > 应用管理 > 我的应用"
- 点击 "新建应用"
- 填写应用信息
上传应用:
- 上传 AAB 或 APK 文件
- 填写应用描述、更新日志等信息
提交审核:
- 提交应用进行审核
- 等待审核通过
发布应用:
- 审核通过后,发布应用
15.5.2 iOS 应用发布
发布到 App Store
注册开发者账号:
- 访问 Apple Developer Program
- 注册开发者账号并付费
创建 App:
- 登录 App Store Connect
- 点击 "My Apps"
- 点击 "+" 按钮,选择 "New App"
- 填写应用信息
配置 App 信息:
- 填写应用描述、关键词、截图等信息
- 配置价格和销售区域
上传构建:
- 使用 Xcode 打包 IPA 文件
- 在 App Store Connect 中上传构建
- 等待构建处理完成
提交审核:
- 提交应用进行审核
- 等待审核通过
发布应用:
- 审核通过后,发布应用
15.6 小结
本章介绍了 Flutter 应用的打包和发布流程,包括:
- 打包前准备:配置应用图标、名称、版本号和权限
- Android 打包:生成签名文件、配置签名信息、打包 APK 和 AAB 文件
- iOS 打包:Xcode 配置、证书配置、打包 IPA 文件
- 打包常见问题排查:解决打包失败、图标不显示、权限错误、应用无法安装等问题
- 应用发布:发布到应用宝、华为应用市场和 App Store
通过本章的学习,你应该能够掌握 Flutter 应用的打包和发布流程,将你的应用发布到应用商店,让更多用户使用你的应用。
在接下来的章节中,我们将学习 Flutter 新手常见问题与避坑指南,帮助你避免开发过程中的常见错误。
