非iOS原生开发者视角:用Flutter搞定AppStore上架全流程(含Xcode打包与宣传图尺寸详解)
非iOS原生开发者视角用Flutter搞定AppStore上架全流程含Xcode打包与宣传图尺寸详解第一次将Flutter应用提交到AppStore的经历就像在陌生城市里拿着纸质地图找路——明明导航显示只有500米却总在Xcode的某个配置项前突然卡壳。作为非iOS原生开发者我们往往更熟悉Dart语言的优雅而非苹果生态里那些隐藏的规则。本文将带你绕过我踩过的所有坑用最直观的方式完成从代码到上架的全流程。1. 上架前的关键准备别让细节拖后腿在打开Xcode之前有七样东西必须提前备齐应用名称中英文各准备一个备用选项避免重复公司/个人版权信息格式© 2023 公司名至少20个关键词用逗号分隔参考竞品的热门词隐私政策网址可用GitHub Pages临时搭建宣传文案主副标题各准备3个版本应用截图必须包含6.5英寸和5.5英寸两种尺寸测试设备UDID用于真机调试特别注意所有截图必须使用实机渲染图模拟器截图会被拒审。推荐使用flutter screenshot命令生成纯净截图。宣传图尺寸对照表设备类型所需尺寸备注iPhone 6.5英寸1242×2688像素必须提供竖版和横版iPhone 5.5英寸1242×2208像素用于Plus系列机型iPad2048×2732像素如果支持iPad才需要2. 证书配置Flutter开发者的简化方案原生iOS开发者会告诉你需要配置Development、Distribution等多种证书。但对于Flutter应用我们只需要关注两种# 1. 创建App ID替换YOUR_BUNDLE_ID open -a Xcode --args -AppID YOUR_BUNDLE_ID # 2. 生成描述文件 fastlane match appstore --readonly常见踩坑点Bundle ID必须与ios/Runner.xcodeproj中的完全一致每个新版本需要重新生成描述文件遇到Failed to create provisioning profile错误时检查开发者账号是否付费3. Xcode打包实战避开这5个致命错误3.1 架构配置在Podfile末尾添加以下代码避免arm64兼容问题post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings[EXCLUDED_ARCHS[sdkiphonesimulator*]] arm64 end end end3.2 权限声明处理在ios/Runner/Info.plist中添加这些关键字段即使你的应用用不到keyNSPhotoLibraryUsageDescription/key string用于保存用户生成的图片/string keyNSCameraUsageDescription/key string拍摄个人头像照片/string keyNSLocationWhenInUseUsageDescription/key string基于位置提供附近服务/string3.3 构建版本号管理推荐使用agvtool自动递增版本号cd ios agvtool next-version -all agvtool new-marketing-version 1.0.04. AppStore Connect填写秘籍在元数据填写阶段这三个技巧能提升通过率关键词策略将核心关键词放在前五个位置避免使用竞争对手商标中英文关键词用逗号分隔年龄分级选择技巧如果应用含用户生成内容自动升到17有支付功能需选偶尔/轻微的赌博内容社交类应用必须声明无限制的社交网络审核备注模板尊敬的审核团队 1. 测试账号testdemo.com / 密码Test1234 2. 所有权限申请均有明确场景说明 3. 支付功能已配置沙箱环境5. 最后冲刺提审后的关键72小时提交审核后要做这些事在AppStore Connect → 活动中查看状态变更准备回复可能的元数据拒绝常见于截图不符如果进入正在审核状态切勿修改任何信息收到拒绝邮件时先检查Resolution Center的详细说明记得在Xcode打包时保留这些日志文件它们能在出现问题时救命~/Library/Logs/gym/Runner.log ~/Library/Developer/Xcode/Archives/**/*.xcarchive当你在AppStore看到自己的应用通过审核时那种成就感绝对值得这些繁琐的步骤。现在你可以开始准备应用推广了——不过那又是另一个值得大书特书的故事了。