Flutter Xcode构建报错:Info.plist dict内BGTask配置段存在非键项
Xcode构建Flutter应用报
non key inside dict line 52错误修复 错误原因
这个报错是iOS项目的Info.plist配置文件XML结构不符合plist规范导致的:plist的<dict>节点有严格的结构要求,内部节点必须按照「<key>标签 + 对应value标签(array/string/number/dict等类型)」的顺序成对出现,不能存在错位标签、多余闭合标签、游离的非key-value节点。
你贴出的配置段存在明确语法错误:第一行的<key>BGTaskSchedulerPermittedIdentifiers</key>已经是完整闭合的key标签,后面跟的<array>是该key对应的配置值,在</array>闭合后多写了一个冗余的</key>闭合标签,这个多余标签不属于任何合法的key-value结构,Xcode解析到对应行时就会抛出dict内存在非法非键元素的报错。这类问题大多是复制粘贴第三方SDK配置片段时,残留了多余的闭合标签导致的。
修复步骤
- 打开Flutter项目下
ios/Runner/Info.plist文件,定位到你贴出的这段配置位置 - 删除配置段最后一行多余的
</key>标签,修正后的合法配置代码如下:
<key>BGTaskSchedulerPermittedIdentifiers</key> <array> <string></string> </array>
- 补充校验:如果你确实启用了iOS后台任务调度能力,需要在
<string></string>内填写你代码中实际注册的后台任务标识符,留空不会触发构建错误,但会导致后台任务无法被系统识别;如果项目没有用到相关后台能力,也可以直接把这段BGTaskSchedulerPermittedIdentifiers配置整块删除。 - 改完后可以在Xcode中右键点击
Info.plist,选择Open As -> Property List,如果能正常打开可视化配置界面,说明结构已经合法,重新执行构建即可。
内容的提问来源于stack exchange,提问作者Mehmet Ali KÜÇÜK
相关产品推荐
相关产品推荐

