调试时缺少 Root.plist 应用程序设置

Posted

技术标签:

【中文标题】调试时缺少 Root.plist 应用程序设置【英文标题】:Root.plist app settings missing when debugging 【发布时间】:2010-11-30 01:56:05 【问题描述】:

我创建了一个设置包和 Root.plist。当我使用 Release|iPhoneSimulator 构建运行我的应用程序时,我可以在“设置应用程序”中查看和编辑我的设置,正如预期的那样。

但是,当我在 Debug|iPhoneSimulation 模式下运行我的应用程序时,我的设置消失并被 Debugger Settings 取代。有没有办法在调试时保持我原来的 Root.plist 设置不变??

我一定是在做一些愚蠢的事情,因为我找不到任何其他有此问题的人的参考资料。

谢谢。

【问题讨论】:

【参考方案1】:

这可能是区分大小写的问题。

MonoDevelop 将调试设置合并到您的设置文件中,如果它在项目中发现一个名为 Settings.bundle/Root.plist 的文件标记为内容,但此检查区分大小写。

如果它没有找到这个文件 - 例如你的设置文件大小写不同 - MD 将简单地创建一个新的设置文件,但 Apple 不区分大小写的文件系统会认为文件名是相同的,所以它会结束在 app bundle 中覆盖你的。

【讨论】:

在我的例子中,文件夹名为“Settings.bundle”,文件名为“Root.plist”。它被标记为“内容”和“始终复制”。 如果我将它作为文本文件复制出来,这就是我的根 plist 的样子.... PreferenceSpecifiers = ( Title = "Optional Title"; Type = PSGroupSpecifier; , Type = PSTextFieldSpecifier; Title = ImageServer; Key = imageServer; "AutocapitalizationType" = None; AutocorrectionType = No; , Type = PSTextFieldSpecifier; Title = Port; Key = port; , ); 【参考方案2】:

看起来我用来弄清楚如何做到这一点的示例是假的。

为了解决这个问题,我删除了 Root.plist,然后通过 Add..New File...Property List 重新添加它。一旦我将我的自定义设置添加到这个 plist 中,一切都开始工作了。

因此,如果您看到示例(例如,http://conceptdev.blogspot.com/2009/08/monotouch-settingsbundle.html)告诉您手动创建一个 xml 文件,然后将其重命名为 Root.plist,请不要这样做。它不起作用。

【讨论】:

另外,没有必要将“复制到输出目录”设置为“始终复制”,因为我已经阅读了很多次。只需将其设置为“请勿复制”即可。 并将构建操作设置为“内容”。 但是仍然存在问题...现在我的设置显示在设置应用程序中,我的应用程序无法访问它们。始终返回 null。我已经下载并尝试了其他使用设置并具有相同结果的演示应用程序。因此,要么 Monotouch 出现问题,要么 4.2 更新破坏了某些东西。我不知道。

以上是关于调试时缺少 Root.plist 应用程序设置的主要内容,如果未能解决你的问题,请参考以下文章

构建 iOS 混合应用程序不会更新 worklight.plist 或 root.plist 文件

iOS App Receipt Validation - 调试时模拟器和设备上缺少收据

缺少 cutil 调试库:无法打开文件 cutil32D.lib

如何为设置包的文本字段提供占位符(Root.plist)

发布版本时 ActionBar 缺少后退箭头,但调试版本没有

Xcode 分析错误,缺少库?