Skip to content

第15章:Flutter 应用打包

15.1 打包前准备

15.1.1 项目配置

应用图标

  1. 准备图标文件

    • 准备不同尺寸的应用图标,推荐使用 1024x1024 的 PNG 图片
    • 可以使用 Flutter Launcher Icons 插件自动生成不同尺寸的图标
  2. 配置 pubspec.yaml

yaml
flutter:
  uses-material-design: true
  assets:
    - images/
  
  # 配置应用图标
  icons:
    android: "launcher_icon"
    ios: true
    image_path: "assets/icon/icon.png"
  1. 运行命令生成图标
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: true
  • name:应用名称
  • 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:创建证书

  1. 登录 Apple Developer Portal
  2. 进入 Certificates, Identifiers & Profiles
  3. 创建 DevelopmentDistribution 证书
  4. 下载证书并安装到 Keychain

步骤 2:创建 Provisioning Profile

  1. 在 Apple Developer Portal 中创建 DevelopmentDistribution Provisioning Profile
  2. 下载并安装到 Xcode

15.3.3 打包 IPA 文件

步骤 1:构建 Flutter 应用

执行以下命令构建 Flutter 应用:

bash
flutter build ios

步骤 2:在 Xcode 中打包

  1. 在 Xcode 中,选择 Product > Archive
  2. 等待构建完成后,在 Organizer 中选择构建的档案
  3. 点击 Distribute App
  4. 选择 Ad HocApp Store Connect
  5. 按照提示完成打包过程

生成的 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 应用发布

发布到应用宝

  1. 注册开发者账号

  2. 创建应用

    • 登录开发者平台
    • 点击 "创建应用"
    • 填写应用信息,上传应用图标和截图
  3. 上传应用

    • 上传 AAB 或 APK 文件
    • 填写应用描述、更新日志等信息
  4. 提交审核

    • 提交应用进行审核
    • 等待审核通过
  5. 发布应用

    • 审核通过后,发布应用

发布到华为应用市场

  1. 注册开发者账号

  2. 创建应用

    • 登录开发者联盟
    • 点击 "应用服务 > 应用管理 > 我的应用"
    • 点击 "新建应用"
    • 填写应用信息
  3. 上传应用

    • 上传 AAB 或 APK 文件
    • 填写应用描述、更新日志等信息
  4. 提交审核

    • 提交应用进行审核
    • 等待审核通过
  5. 发布应用

    • 审核通过后,发布应用

15.5.2 iOS 应用发布

发布到 App Store

  1. 注册开发者账号

  2. 创建 App

    • 登录 App Store Connect
    • 点击 "My Apps"
    • 点击 "+" 按钮,选择 "New App"
    • 填写应用信息
  3. 配置 App 信息

    • 填写应用描述、关键词、截图等信息
    • 配置价格和销售区域
  4. 上传构建

    • 使用 Xcode 打包 IPA 文件
    • 在 App Store Connect 中上传构建
    • 等待构建处理完成
  5. 提交审核

    • 提交应用进行审核
    • 等待审核通过
  6. 发布应用

    • 审核通过后,发布应用

15.6 小结

本章介绍了 Flutter 应用的打包和发布流程,包括:

  • 打包前准备:配置应用图标、名称、版本号和权限
  • Android 打包:生成签名文件、配置签名信息、打包 APK 和 AAB 文件
  • iOS 打包:Xcode 配置、证书配置、打包 IPA 文件
  • 打包常见问题排查:解决打包失败、图标不显示、权限错误、应用无法安装等问题
  • 应用发布:发布到应用宝、华为应用市场和 App Store

通过本章的学习,你应该能够掌握 Flutter 应用的打包和发布流程,将你的应用发布到应用商店,让更多用户使用你的应用。

在接下来的章节中,我们将学习 Flutter 新手常见问题与避坑指南,帮助你避免开发过程中的常见错误。

© 2026 编程马·菜鸟教程 版权所有