Flutter执行build ipa命令未生成IPA文件的问题求助
我执行以下Flutter命令构建iOS IPA文件:
➜ ios git:(master) ✗ ~/fvm/versions/2.5.0/bin/flutter build ipa Changing current working directory to: /Users/xiaoqiangjiang/source/reddwarf/frontend/flutter-netease-music Archiving com.reddwarf.musicapp... Automatically signing iOS for device deployment using specified development team in Xcode project: 6JP4P88ZJB Running pod install... 960ms Running Xcode build... └─Compiling, linking and signing... 4.7s Xcode archive done. 40.8s Built /Users/xiaoqiangjiang/source/reddwarf/frontend/flutter-netease-music/build/ios/archive/Runner.xcarchive. 💪 Building with sound null safety 💪
但build文件夹里找不到IPA文件,日志无报错也没输出IPA路径,而且Flutter的归档选项不可用(截图:
)。
我已经尝试在${PROJECT}/ios/Runner/Info.plist中添加了如下配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleDisplayName</key> <string>Music</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>dolphin</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>$(FLUTTER_BUILD_NAME)</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>$(FLUTTER_BUILD_NUMBER)</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> <key>UIBackgroundModes</key> <array> <string>audio</string> <string>bluetooth-central</string> <string>bluetooth-peripheral</string> <string>external-accessory</string> <string>fetch</string> <string>location</string> <string>processing</string> <string>remote-notification</string> <string>voip</string> </array> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIMainStoryboardFile</key> <string>Main</string> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> <key>CADisableMinimumFrameDurationOnPhone</key> <true/> </dict> </plist>
用Xcode 14.1手动归档可以正常完成,但通过Flutter命令就是生成不了IPA,该怎么解决?
指定导出配置文件:Flutter 2.5.0的
build ipa命令默认仅生成xcarchive包,不会自动导出IPA。需添加--export-options-plist参数指定导出配置,示例命令:~/fvm/versions/2.5.0/bin/flutter build ipa --export-options-plist=ExportOptions.plist你可以从Xcode手动归档导出时保存的
ExportOptions.plist复用,或手动创建符合需求的配置文件(需指定导出方法,如ad-hoc、app-store等)。升级Flutter版本:Flutter 2.5.0与Xcode 14.1存在兼容性问题,升级到3.x系列稳定版后,
flutter build ipa会自动处理IPA导出流程,兼容性更好。手动从xcarchive导出IPA:既然已生成
Runner.xcarchive,可直接用Xcode打开该归档文件,按手动流程导出;也可使用xcodebuild命令行导出:xcodebuild -exportArchive -archivePath /Users/xiaoqiangjiang/source/reddwarf/frontend/flutter-netease-music/build/ios/archive/Runner.xcarchive -exportPath /Users/xiaoqiangjiang/Desktop/IPA -exportOptionsPlist ExportOptions.plist注意替换命令中的导出路径和配置文件路径为你自己的实际路径。
检查Xcode项目配置:确认Xcode项目中
Runnertarget的签名配置正确,归档导出配置无冲突。Flutter命令会读取Xcode项目配置,若配置异常可能导致无法自动导出IPA。
内容的提问来源于stack exchange,提问作者Dolphin

