编译后的iPhone应用程序以应用程序束的形式存在。和Macintosh类似,这些应用程序束就是采用.app扩展名的文件夹。程序的内容和资源位于此文件夹中,包括编译后的可执行文件、支持媒体(如图像和音频)和一些向OS描述应用程序的特殊文件。操作系统将文件夹视为一个应用程序束。
1.8.1 应用程序文件夹层次结构
iPhone束很简单。与Mac不同,iPhone束不使用Contents和Resources文件夹来保存数据,也不使用MacOS文件夹来保存可执行文件。所有资源都位于顶层文件夹中。例如,Xcode并未将语言支持.lproj文件夹置于Contents/Resources/中,而是将它直接放在了顶层.app文件夹中。你仍然可以使用子文件夹来组织项目,但它们只是开发人员定义的临时文件夹,并且不遵循任何标准。
iPhone SDK的核心OS支持包括NSBundle类。通过这个类,可以访问应用程序束中存储的文件。使用NSBundle类可以更加轻松地定位应用程序的根文件夹,以及导航到自定义子文件夹,以指向并加载声音、图像和数据文件等内置资源。
说明 与在Macintosh上一样,用户域有相应的系统镜像。苹果公司官方发布的应用程序位于主/Applications文件夹中。第三方应用程序则位于/var/mobile/Applications文件夹中。大多数情况下,底层UNIX文件系统已被iPhone的沙盒遮盖,本节稍后将讨论此问题。
1.8.2 可执行文件
应用程序的可执行文件位于应用程序束的顶层文件夹中。它必须携带可执行许可才能正确运行,并且在编译过程中作为应用程序束的一部分被签名。你只能加载和运行经官方开发人员证书签名的应用程序。那些证书由苹果公司在官方开发人员站点通过iPhone开发人员计划门户颁发。
根据不同的应用程序部署方式,苹果公司提供了多种签名配置文件,它们被称作移动配置。对于开发期间将在本地设备上测试的应用程序,将被发送到注册设备上测试的应用程序,以及将通过App Store发布的应用程序,你需要不同的配置。本章前面已经介绍了关于创建配置的内容。第2章将详细讨论实际的应用程序签名过程。
1.8.3 Info.plist文件
与Macintosh相同,iPhone应用程序文件夹包含所有重要的Info.plist文件。Info.plist文件是向操作系统描述应用程序的XML属性列表。属性列表存储各种用于不同目的的键/值对,并且可以保存为可读的基于文本的格式或经过压缩的二进制格式。在Info.plist文件中可以找到应用程序可执行文件(CFBundleExecutable,“Executable file”)、应用程序图标下显示的文本(CFBundleDisplayName,“Bundle display name”)以及应用程序的唯一标识符(CFBundleIdentifier,“Bundle identifier”)。
在设置显示名称时要小心。如果标题太长而无法完全显示,那么它将被截断。必要时,iPhone会增加省略号。所以,名为“My Very First iPhone App”的应用程序可能显示为“My Very F...”。这样的标题向终端用户传达的信息还不如一个更简单的标题传达的信息多,例如“First App”。
应用程序标识符通常使用苹果的反向域名命名格式(例如com.sadun.appname)。标识符对于正确的行为和执行至关重要。它不能与App Store中的任何其他标识符重复。使用时,产品标识符将应用程序注册到SpringBoard,后者是iPhone的“Finder”。SpringBoard运行用于启动应用程序的主屏幕。产品标识符还形成了内置首选项系统(即用户默认)的基础。
标识符区分大小写,并且必须与在开发人员门户上生成的配置一致。如果使用了错误的包标识符,将浪费开发人员数小时的时间。可通过在Xcode中编辑项目的设置来指定标识符(如图1-4所示)。
iPhone开发秘籍 (第2版)——1.8 iPhone应用程序组件
书名: iPhone开发秘籍 (第2版)
作者: [美] Erica Sadun
出版社: 人民邮电出版社
原作名: The iPhone Developer’s Cookbook: Building Applications with the iPhone SDK 3.0
译者: 张彩霞 | 高颖 | 易磊
出版年: 2010-11
页数: 680
定价: 99.00元
装帧: 平装
丛书: 图灵程序设计丛书
ISBN: 9787115240019