在我的Debug版本中,我想在Settings.bundle/Root.plist
文件中显示一些设置。主要是,我想显示移动应用程序正在使用哪个后端环境,并使其可以为测试人员配置。
在我的发布版本中,我想在Settings.bundle/Root.plist
文件中隐藏这些设置,因为它始终指向生产。
如何在编译时修改Root.plist
文件,因为无法在运行时修改文件?
答案 0 :(得分:1)
在OS-X上,有一个名为PlistBuddy
的命令可以列出/更改.plist
文件。
/usr/libexec/PlistBuddy
Usage: PlistBuddy [-cxh] <file.plist>
-c "<command>" execute command, otherwise run in interactive mode
-x output will be in the form of an xml plist where appropriate
-h print the complete help info, with command guide
您可以使用自定义MSBuild任务使用.plist
或-c "Add"
或-c "Set"
命令修改-c "Delete"
,运行/usr/libexec/PlistBuddy -h
以获取有关使用的帮助各种命令。
从iOS项目根目录开始,在控制台上以xml格式输出.plist
:
find . -name "Root.plist" | xargs -n 1 -J % /usr/libexec/PlistBuddy -x -c "Print" %
<?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>PreferenceSpecifiers</key>
<array>
<dict>
<key>Title</key>
<string>Debug Settings</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>1</string>
<key>FalseValue</key>
<string>0</string>
<key>Key</key>
<string>__monotouch_debug_enabled</string>
<key>Title</key>
<string>Enabled</string>
<key>TrueValue</key>
<string>1</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
<key>DefaultValue</key>
<string>automatic</string>
<key>Key</key>
<string>__monodevelop_host</string>
<key>Title</key>
<string>Xamarin Studio Host</string>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
<key>Title</key>
<string>AppSettings</string>
</dict>
</plist>