3

我正在使用 XCode 构建一个 iPhone 应用程序,我想以与下面显示的 XCode 构建步骤相同的方式在外部处理 info plist 文件

Processing /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/Info.plist TestAppGen-Info.plist
mkdir /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app
cd /Users/kte/Projects/TestAppGen
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
<com.apple.tools.info-plist-utility> TestAppGen-Info.plist -genpkginfo /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/PkgInfo -expandbuildsettings -format xml -o /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/Info.plist

构建日志的这段摘录引用了一个 com.apple.tools.info-plist-utility,它是我从网络上的各种来源收集的,是一个内部 XCode 实用程序。

是否可以从命令行运行 com.apple.tools.info-plist-utility?

4

2 回答 2

3

您可以使用名为 PlistBuddy 的工具,/usr/libexec/PlistBuddy查看它的手册页。

但是您还需要将 plist 转换回二进制 plist 文件。这可以在构建脚本中像这样完成

plutil -convert binary1 "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
于 2009-08-14T19:04:47.407 回答
2

“plutil”答案是一个很好的开始。不幸的是,Xcode 构建过程对 Info.plist 文件所做的工作比将其转换为二进制文件更多,例如在我的系统上,它在字段中添加:

-MinimumOSVersion
-PlatformName
-CFBundleExecutable
-SDKName
-CFBundleResourceSpecification
-CFBundleSupportedPlatforms

根据Apple 文档,您不应该自己设置其中一些值:

最低操作系统版本

最低操作系统版本(字符串)。当您构建 iPhone 应用程序时,Xcode 将目标操作系统(由 Base SDK 选择确定)记录为 MinimimOSVersion 属性。不要在 Info.plist 文件中自己指定这个属性;它是系统编写的属性。当您将应用程序发布到 App Store 时,商店会根据此属性指示您的应用程序可以在其上运行的 iPhone OS 版本。它相当于 Mac OS X 上的 LSMinimumSystemVersion 属性。

作为自定义构建过程的一部分,我在尝试重新签署我的应用程序时遇到了各种问题。

于 2009-09-03T18:54:51.263 回答