如何在Release构建中排除Info.plist中的自定义值?
解决Xcode中Release构建排除Info自定义键值的问题
你删除Info.plist后这些值还保留,是因为Xcode的Info标签页设置会同步写入项目的构建设置(对应INFOPLIST_KEY_前缀的配置项),这些构建设置会直接参与最终的App打包,和是否存在物理的Info.plist文件无关。
下面是具体操作步骤:
方法一:通过Info标签页按构建配置区分
- 选中你的项目目标,切换到「Info」标签页
- 找到你添加的
NSLocalNetworkUsageDescription和NSBonjourServices这两个键 - 点击每个键右侧的配置下拉菜单(默认显示「All, Any SDK」),选择「Debug」——这样该键值只会在Debug构建中生效
- 切换到Release配置视图(点击Xcode顶部工具栏的配置选择器,选「Release」),然后直接删除这两个键(选中键行后按Delete键)
方法二:通过Build Settings直接修改
- 选中项目目标,切换到「Build Settings」标签页
- 在搜索框输入
INFOPLIST_KEY_NSLocalNetworkUsageDescription,找到对应的配置项 - 点击该行展开Debug和Release的分配置:
- Debug配置保留原有的描述文本
- Release配置清空内容(直接删除文本即可)
- 对
INFOPLIST_KEY_NSBonjourServices执行同样操作:Debug保留数组内容,Release清空
验证是否生效
构建Release版本后,找到生成的.app包,右键选择「显示包内容」,打开里面的Info.plist,确认NSLocalNetworkUsageDescription和NSBonjourServices这两个键已经不存在。
你要排除的具体键值对如下:
<dict> <key>NSLocalNetworkUsageDescription</key> <string>Access to the local network for development builds</string> <key>NSBonjourServices</key> <array> <string>_nslogger._tcp</string> <string>_nslogger-ssl._tcp</string> </array> </dict>
内容的提问来源于stack exchange,提问作者BobC
相关产品推荐
相关产品推荐

