一、错误信息:
Encountered error while creating the IPA:
error: exportArchive: "Runner.app" requires a provisioning profile with the
Push Notifications feature.
Try distributing the app in Xcode:
open /project/your_app/build/ios/archive/Runner.xcarchive
证书、描述文件都配置好的情况下,执行 Flutter build ipa --release 命令时会出现这种错误。 但使用 xcode update ios 不会出现这种问题。
二、ExportOptions.plist 清单文件
手动打包时需要一个 .plist 的清单文件。
Flutter 并没有在创建项目之出就初始化此文件。经查询 这个文件是xcode 在 Xcode 打包 iOS 项目时自动生成的文件。该文件只在 归档(Archive) 和 导出(Export) 过程中由 Xcode 使用。
但是 使用 Flutter 手动打包时也需要指定此文件。
三、如何获得 ExportOptions.plist 文件
1.自行创建: 文件格式
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>destination</key><string>export</string><key>manageAppVersionAndBuildNumber</key><true/><key>method</key><string>app-store</string> <!-- 可选值: app-store, ad-hoc, enterprise, development --><key>provisioningProfiles</key><dict><key>com.your.bundle.id</key><string>Your_Provisioning_Profile_Name</string></dict><key>signingCertificate</key><string>Apple Distribution</string><key>signingStyle</key><string>manual</string> <!-- 或者 "automatic" --><key>teamID</key><string>Your_Team_ID</string>
</dict>
</plist>
2. 通过 xcode export 创建
打开 Xcode:Product -> Archive 打开 Archives 窗口
点击 Distribute App
选择自定义 Custom -> Next
一定要选择 Export
剩下的默认 一直下一步就可以, 最后会让你选择一个存储位置,最终导出
导出的文件中会包含由 Xcode 生成的 ExportOptions.plist 文件
四、手动打包:当执行打包命令时需要指定这个文件的完整地址:
flutter build ipa --release --export-options-plist=/project/your_app/ios/ExportOptions.plist