持续收到苹果ITMS-91061隐私清单缺失邮件的Flutter技术求助
解决Flutter 3.16.8提交App Store时的ITMS-91061隐私清单缺失问题
核心原因
Flutter 3.16.8本身没有内置隐私清单文件,苹果检测到Flutter作为第三方SDK缺少PrivacyInfo.xcprivacy,因此触发ITMS-91061警告。你之前添加的清单仅在App主目标中,并未嵌入Flutter.framework内部,所以苹果仍会检测到框架本身的缺失。
可行解决方案
方案1:升级Flutter到内置隐私清单的版本
Flutter团队在3.19.0及以上版本中已内置隐私清单,直接升级是最彻底的解决办法:
- 执行命令升级:
flutter upgrade - 重新构建并归档应用,提交至App Store Connect
方案2:手动给Flutter.framework添加隐私清单(不升级SDK的情况)
若暂时无法升级Flutter,可手动为Flutter.framework嵌入隐私清单:
- 在项目的
ios/Flutter目录下创建PrivacyInfo.xcprivacy文件,内容如下:
<?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>NSPrivacyCollectedDataTypes</key> <array> <dict> <key>NSPrivacyCollectedDataType</key> <string>NSPrivacyCollectedDataTypeDeviceID</string> <key>NSPrivacyCollectedDataTypePurposes</key> <array> <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string> </array> </dict> </array> <key>NSPrivacyTracking</key> <false/> </dict> </plist>
- 修改
ios/Podfile,添加以下代码确保清单被打包进Flutter.framework:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) # 给Flutter.framework添加隐私清单 if target.name == 'Flutter' target.build_configurations.each do |config| config.build_settings['COPY_PHASE_STRIP'] = 'NO' privacy_file = File.join(__dir__, 'Flutter', 'PrivacyInfo.xcprivacy') if File.exist?(privacy_file) target.resources_build_phase.add_file_reference( installer.pods_project.new_file(privacy_file) ) end end end end end
- 执行
pod install,清理Xcode缓存(Command+Shift+K),重新归档提交
方案3:验证隐私清单是否正确嵌入
提交前可手动检查归档包:
- 归档后,在Xcode Organizer中右键归档包,选择"Show in Finder"
- 右键
.xcarchive文件,选择"Show Package Contents" - 进入
Products/Applications/你的App.app/Frameworks/Flutter.framework - 确认目录下存在
PrivacyInfo.xcprivacy文件,苹果检测时就不会报错
注意事项
- 不要仅在App主目标添加隐私清单,必须确保Flutter.framework内部包含该文件,苹果的检测是针对每个第三方SDK的
- 若使用了其他第三方插件,需同步检查这些插件的SDK是否包含隐私清单,避免触发其他ITMS-91061警告
内容的提问来源于stack exchange,提问作者Pirman Dwiana
相关产品推荐
相关产品推荐

