IOS 应用程序的程序包分析

来源:互联网 发布:阿里云开放端口 编辑:程序博客网 时间:2024/06/16 10:40

作者:朱克锋

邮箱:zhukefeng@iboxpay.com

转载请注明出处:http://blog.csdn.net/linux_zkf


当您连编iPhone程序时,Xcode会将它组织为程序包。程序包是文件系统中的一个目录,用于将执行代码和相关资源集合在一个地方。iPhone应用程序包中包含应用程序的执行文件和应用程序需要用到的所有资源(比如应用程序图标、其它图像、和本地化内容)。下面出了一个典型的iPhone应用程序包中的内容(为了便于说明,我们称之为MyApp)。这个例子只是为了演示,表中列出的一些文件可能并不出现在您自己的应用程序包中。
表1-2  一个典型的应用程序包
 
文件描述       

MyApp   

包含应用程序代码的执行文件,文件名是略去.app后缀的应用程序名。这个文件是必需的。       

Settings.bundle  

 设置程序包是一个文件包,用于将应用程序的偏好设置加入到Settings程序中。这种程序包中包含一些属性列表和其它资源文件,用于配置和显示您的偏好设置。更多信息请参见“显示应用程序的偏好设置”部分。       

Icon.png  

 这是个57 x 57像素的图标,显示在设备的Home屏幕上,代表您的应用程序。这个图标不应该包含任何光亮效果。系统会自动为您加入这些效果。这个文件是必须的。更多有关这个图像文件的信息,请参见“应用程序图标和启动图像”部分。       

Icon-Settings.png   

这是一个29 x 29像素的图标,用于在Settings程序中表示您的应用程序。如果您的应用程序包含设置程序包,则在Settings程序中,这个图标会显示在您的应用程序名的边上。如果您没有指定这个图标文件,系统会将Icon.png文件按比例缩小,然后用做代替文件。有关这个图像文件的更多信息,青参见“显示应用程序的偏好设置”部分。       

MainWindow.nib  

 这是应用程序的主nib文件,包含应用程序启动时装载的缺省用户界面对象。典型情况下,这个nib文件包含应用程序的主窗口对象和一个应用程序委托对象实例。其它界面对象则或者从其它nib文件装载,或者在应用程序中以编程的方式创建(主nib文件的名称可以通过Info.plist文件中的NSMainNibFile键来指定,进一步的信息请参见“信息属性列表”部分)。       

Default.png  

 这是个480 x 320像素的图像,在应用程序启动的时候显示。系统使用这个文件作为临时的背景,直到应用程序完成窗口和用户界面的装载。有关这个图像文件的信息请参见“应用程序图标和启动图像”部分。       

iTunesArtwork  

 这是个512 x 512的图标,用于通过ad-hoc方式发布的应用程序。这个图标通常由App Store来提供,但是通过ad-hoc方式分发的应用程序并不经由App Store,所以在程序包必须包含这个文件。iTunes用这个图标来代表您的程序(如果您的应用程序在App Store上发布,则在这个属性上指定的文件应该和提交到App Store的文件保持一致(通常是个JPEG或PNG 文件),文件名必须和左边显示的一样,而且不带文件扩展名)。       

Info.plist   

这个文件也叫信息属性列表,它是一个定义应用程序键值的属性列表,比如程序包ID、版本号、和显示名称。进一步的信息请参见“信息属性列表”部分。这个文件是必需的。       

sun.png (或其它资源文件)

   非本地化资源放在程序包目录的最上层(在这个例子中,sun.png表示一个非本地化的图像)。应用程序在使用非本地化资源时,不需要考虑用户选择的语言设置。       

en.lproj
fr.lproj
es.lproj
其它具体语言的工程目录    本地化资源放在一些子目录下,子目录的名称是ISO 639-1定义的语言缩写加上.lproj后缀组成的(比如en.lproj、fr.lproj、和es.lproj目录分别包含英语、法语、和西班牙语的本地化资源)。更多信息请参见“国际化您的应用程序”部分。    
iPhone应用程序应该是国际化的。程序支持的每一种语言都有一个对应的语言.lproj文件夹。除了为应用程序提供定制资源的本地化版本之外,您还可以本地化您的应用程序图标(Icon.png)、缺省图像(Default.png)、和Settings图标(Icon-Settings.png),只要将同名文件放到具体语言的工程目录就可以了。然而,即使您提供了本地化的版本,也还是应该在应用程序包的最上层包含这些文件的缺省版本。当某些的本地化版本不存在的时候,系统会使用缺省版本。
您可以通过NSBundle类的方法或者与CFBundleRef类型相关联的函数来获取应用程序包中本地化和非本地化图形及声音资源的路径。举例来说,如果您希望得到图像文件sun.png(显示在“响应中断”部分中)的路径并通过它创建一个图像文件,则需要下面两行Objective-C代码:
 
NSString* imagePath = [[NSBundle mainBundle] pathForResource:@"sun" ofType:@"png"];
       
UIImage* sunImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
    

代码中的mainBundle类方法用于返回一个代表应用程序包的对象




原创粉丝点击