ARTICLE · 1147884
只要传 App Store,Flutter 也躲不掉
嗡~ 码蜂奶爸!今天嗡:Apple 这波四条新规,有点像小时候交作业——封面没写名字,里面画得再好,老师也不收。
其中最狠的一条 2027年4月生效:到那时上传的包必须用 iOS 27 SDK 构建,不够新,你连被审核的资格都没有,压根传不进后台。而这四条里,真正需要动代码的一条都没有。
先划个范围:这条管的是最终往 App Store 传的包。原生、Flutter、uni-app、RN 都算进去——只要你的产物最后走苹果这道门上架,就躲不掉。反过来说,纯鸿蒙和纯安卓的包不在这一条里,那边的同学可以先松口气。
再提醒两句:这些不是"建议尽快",它们每一条都带着日期。另外这篇跟我上次写的折叠屏适配不是一回事——上次讲的是布局怎么写、生命周期怎么迁,要动代码;这次全是提交、截图、素材、隐私提示、订阅这一层的事,属于分发与上架合规层,一个字都不涉及业务代码。两篇不重叠。
先把时间线摆在桌面上
下面这张图是我把散在好几份 Apple 公告里的日期收拢到一条线上。左边是现在,右边是截止线。

五个节点,两条在下个月,两条在明年
看出来没有,最热闹的那个日期是 10月23日,iPhone Duo 开卖。但真正会让你的包传不上去的,是最后那条。
第一件事:最低 SDK 要求,这条没得商量
Apple 官方公告写得很直白:从 2027年4月起,上传到 App Store Connect 的 iOS 和 iPadOS 应用,必须用 iOS 27 与 iPadOS 27 SDK 或更新版本构建。tvOS、visionOS、watchOS 同样,各自对应 27。
所以门槛不在你写的代码,在你用的构建环境。Xcode 版本够不够,决定了那一天你能不能把包送进门。
跨端项目这里还多一层:Flutter、uni-app 出 iOS 包,底下调的还是 Xcode 那一套。你把 Xcode 升上去了,框架那边的引擎和插件也得跟着走,中间有一环没同步,出包就断在这里。
还有一个更常见的坑:CI 上那台打包机的系统不一定跟着你的本地一起升。所以别等明年3月才发现,这个月就切个分支,拿新版本跑一遍全量构建,看看有没有红。
第二件事:iPhone Duo 截图,2027年4月起强制
这条的措辞要抠一下。它不要求你适配折叠形态,只要求你的产品页有 iPhone Duo 的截图。
也就是说,哪怕你打定主意这辈子不做折叠屏适配,明年4月起提交版本,截图照样得补齐。对一个人维护的项目来说,这就是实打实多出来的一份活。
动作很明确:这个月就把截图流程完整跑通一次,别留到明年春天。
顺手说两个工具,都是这波一起放出来的。一个叫 Device Hub,在 Xcode 27.1 里,能把虚拟的 iPhone Duo 直接开、合、旋转、折叠,用来看看你的页面在各种姿态下什么德行。另一个是 App Store Connect 里的预览工具,能看到你的截图、产品页头图和描述,摆在 Duo 产品页上是什么效果。
还有个细节得提一句:现有 App 不重新构建也能在 Duo 上跑,但只有用 iOS 27.1 SDK 重新构建过的,才能用满整块内屏。这条我是从二手报道看到的,具体以官方文档为准,别拿它当结论用。
第三件事:欧盟的追踪提示换了形态
从 iOS 27.2 和 iPadOS 27.2 开始,欧盟地区的开发者可以选用 App Tracking Transparency 系统提示的替代版本。而德国、法国、意大利、波兰、罗马尼亚这五个国家,只提供替代版本。
Apple 的原话是:什么时候必须征求用户同意,这个要求本身没变,变的只是提示长什么样。
所以这不是技术优化,是合规动作。你的 App 要是在欧盟上架、又用到了 ATT,就得把这条走一遍:检查自己的追踪许可流程,在这五个国家是不是正常。
还有个容易漏的点:在欧盟,用户上一次选完之后满一年,App 可以再问一次,同意和拒绝都一样。这个计时是系统自己管的,不用你写代码去记时间。
第四件事:订阅分发,默认已经帮你开了
这条最容易被忽略,因为它是"默认帮你开好"的那种。
从 9月16日起,App Store Connect 里的订阅默认启用多席位购买。你可以整体关掉,也可以按 App Store、Apple Business、Apple School Manager 分开管。问题是,你什么都不做的话,它就是开着的。
往后的节奏是这样:10月22日 Volume Purchasing 上线,面向用 Apple Business Manager 或 Apple School Manager 的组织;今年冬季 Group Purchases 上线,一个人买多个席位、邀请别人进来,不用经过 IT 部门。
底子还是 StoreKit 2。要是你还没迁,这条得往前排一排。
四条并排看一眼

四件事,两个截止日期都在 2027年4月
动手:打开终端,先把状态列出来
光看规则容易慌,先看看自己现在是什么状态。下面这段脚本只读、不写、不上传,跑完手里就有一张清单了。
#!/usr/bin/env bash # scripts/store-assets-audit.sh # 只列状态,不上传任何东西。需要 Xcode 命令行工具。 set -u echo "== Xcode 版本 ==" xcodebuild -version 2>/dev/null || echo "未安装 Xcode 命令行工具" echo echo "== 可用模拟器(找 iPhone Duo 相关) ==" xcrun simctl list devices available 2>/dev/null \ | grep -iE "duo|fold" || echo "未找到,需 Xcode 27.1 或更新" echo echo "== 构建架构(macOS 27 起仅 Apple 芯片) ==" for f in $(find . -name "*.pbxproj" -maxdepth 3 2>/dev/null); do echo "-- $f" grep -nE "ARCHS|ONLY_ACTIVE_ARCH|EXCLUDED_ARCHS" "$f" | head -10 done echo echo "== Info.plist 里的隐私相关键 ==" for p in $(find . -name "Info.plist" -maxdepth 4 2>/dev/null); do echo "-- $p" /usr/libexec/PlistBuddy -c "Print" "$p" 2>/dev/null \ | grep -iE "Tracking|UsageDescription|Privacy" | head -20 donechmod +x scripts/store-assets-audit.sh ./scripts/store-assets-audit.sh它不判断对错,只把事实摆出来。剩下的你自己一眼就能看出来哪里不对。
两个容易被漏掉的坑
第一个,素材库。App Store Connect 里新上了 Asset Library,可以把素材、截图、App 预览统一上传归档。它的好处是能提前送审——比如今年冬季活动要用的图,你现在就能传上去等审核,到时候直接用,不用卡在活动前一天手忙脚乱。
第二个,证书。旧的 Developer ID Certification Authority,也就是 Sub-CA,在 2027年2月1日到期,由它签发的证书那天之后就不工作了。去 Certificates 里翻一下,有没有证书的到期日卡在这一天或之前。这个跟 iOS 上架不是一回事,但它有个共同特点:日期到了才想起来,就来不及了。
这个月的排期,我按这个走
表里的日期取自 Apple 官方公告。平台规则会调整,动手前请以 Apple 开发者官网最新公告为准。
最后说两句实在的
我不太喜欢把这类事情写成"苹果又来折腾人"。这四条里,真正需要动代码的一条都没有,全是材料和时间的事。麻烦是真的麻烦,但它不考验你技术行不行,只考验你有没有把它记在日历上。
你手上还有几个 App 在拿旧 SDK 出包?评论区报个数,我看看是不是只有我一个人在紧张。
奶爸悟
作业封面写没写名字,和里面画得好不好,是两件事。上架也一样,代码跑得再顺,材料差一天,它就是进不去。规矩这东西从来不看你有多努力,只看你有没有在截止日期前交齐。