Flutter 打包 IPA

2025-04-01  本文已影响0人  那月无痕

以下是解决 Flutter 打包 IPA 时手动签名问题的详细步骤,涵盖配置、常见错误处理及优化建议:


1. 准备工作:生成证书与描述文件

1.1 创建开发者证书

  1. 访问 Apple Developer 网站,登录后进入 Certificates, Identifiers & Profiles
  2. 创建证书:
    • 类型:选择 iOS Distribution (App Store 或 Ad Hoc)
    • 按指引生成 .certSigningRequest 文件(需通过Mac钥匙串访问生成)。
  3. 下载证书(.cer 文件)并双击安装到钥匙串。

1.2 注册 Bundle Identifier

  1. Identifiers → App IDs 中注册唯一的 Bundle ID(需与 ios/Runner/Info.plist 中的 CFBundleIdentifier 一致)。

1.3 创建手动签名描述文件

  1. Profiles 中创建描述文件:
    • 类型:选择 App Store(提交商店)或 Ad Hoc(测试分发)。
    • 关联证书和 Bundle ID,选择需要授权的设备(Ad Hoc 需添加设备 UDID)。
  2. 下载描述文件(.mobileprovision),双击安装到 Xcode。

2. 配置 Flutter 项目

2.1 关闭 Xcode 自动签名

  1. 打开 Flutter 项目的 iOS 工程:
    open ios/Runner.xcworkspace
    
  2. 在 Xcode 中定位到 Runner → Signing & Capabilities
  3. 取消勾选 Automatically manage signing
  4. 手动选择:
    • Signing Certificate:选择已安装的 Distribution 证书(如 Apple Distribution: Your Name)。
    • Provisioning Profile:选择对应的描述文件。

2.2 同步 Flutter 配置

  1. 确保 pubspec.yaml 中的 version 与 Xcode 的 VersionBuild 一致。
  2. 清理旧构建缓存:
    flutter clean
    

3. 手动签名打包 IPA

3.1 使用 Flutter 命令打包

  1. 运行以下命令生成 IPA:
    flutter build ipa --release --no-codesign
    
    • --no-codesign:跳过 Flutter 默认的自动签名流程。

3.2 手动签名 IPA

  1. 通过 Xcode 完成签名:
    • 打开生成的 .xcarchive 文件(路径:build/ios/archive/Runner.xcarchive)。
    • Organizer 界面点击 Distribute App,选择手动签名。
    • 选择证书和描述文件,导出 IPA。

3.3 直接使用 Xcode 归档

  1. 直接在 Xcode 中执行 Product → Archive,按标准 iOS 应用流程手动签名导出 IPA。

4. 常见错误与解决

4.1 错误:Code Signing Identity not found

4.2 错误:No profiles for 'com.example.app' were found

4.3 错误:Failed to create provisioning profile


5. 高级优化建议

5.1 使用 Fastlane 自动化签名

  1. 安装 Fastlane:
    sudo gem install fastlane -NV
    
  2. 在 Flutter 项目的 ios 目录初始化:
    cd ios && fastlane init
    
  3. 配置 Fastfile 实现自动签名:
    lane :release do
      sync_code_signing(type: "appstore")
      build_app(
        scheme: "Runner",
        export_method: "app-store"
      )
    end
    

5.2 多环境签名配置

5.3 安全存储证书


总结

通过关闭 Xcode 自动签名、手动选择证书和描述文件,结合 flutter build ipa --no-codesign 跳过自动签名流程,即可解决 Flutter 手动签名问题。对于复杂场景,推荐使用 Fastlane 或 CI/CD 工具实现自动化,提升效率和安全性。

上一篇 下一篇

猜你喜欢

热点阅读