iOS程序开发对iPhone和iPad兼容性的规划方法

来源:互联网 发布:淘宝代画效果图被骗 编辑:程序博客网 时间:2024/05/21 22:32

苹果iOS程序开发经常会遇到下面这个问题:

      到底是一套代码兼容 iPhone和 iPad(含iTouch)还是做两个应用去分别支持iPhone和iPad?

其实这不光是成需要需要考虑的程序结构上的问题,而是一个产品规划的问题。

这里面涉及到决策的问题,按照我经历的几个iOS开发项目,我总结出一下的几点经验:

1.    首先需要考虑你提供的功能对于iPhone和iPad这两类用户是否有不同的需求?也就是意味着你的应用对 iPad 和 iPhone用户来说是否有不同的界面和交互设计?如果有则干脆就两套代码,两个App单独开发。功能上用公用的函数库来共享,在代码架构上就是通过 GIT 的Submodule的形式来维护公用库。各自产品自己建立项目baseline进行开发。

2.    需要考虑你的App是否需要针对iPhone和iPad不同的分辨率进行布局设计。这会设计到

iOS 设备现有的分辨率如下:

iPhone / iPod Touch

普通屏                 320x 480    像素   iPhone 1、3G、3GS;iPodTouch 1、2、3    

3:2Retina 屏       640x 960   像素   iPhone 4、4S,iPod Touch 4    

 16:9Retina 屏   640 x 1136  像素    iPhone5,iPod Touch 5  

iPad

普通屏                 768x 1024  像素   iPad 1, iPad2,iPad mini    

Retina屏             1536 x2048像素    New iPad,iPad 4, iPad mini 2   

做一款 兼容 iPad 和 iPhone 所有型号手机的程序,光Splash Screen就需要做6种。

但 320x480 和 640x960  (768x1024 与 1536x2048)只是4倍的关系@2x 的关系。

但是还要考虑到 iPad版本一般需要支持横屏。所以工作量还是蛮大的。而且不容易协调。导致整个项目的迭代遇到很多问题,无法正式发布产品。

3.    第三,项目开发人员的数量能够决定到底是一套代码支持 iPhone和 iPad还是 分开。

如果开发人员数量很少,那么为了高效和介绍代码浪费,而且一套代码+配置文件的方式是比较好的选择。因为任何一个开发人员都不愿意重复写自己已经写过的代码。公用代码是比较好的方式。在可控范围内减少维护人员的支出。相反,如果开发人员数量较多,那分开项目并行开发是比较有效提高效率的方式,但这也会带来沟通效率上的损失。不同水平的开发人员协同工作来短板效应。

综上,如果时间紧急,那么可以考虑迭代+一套代码维护。如果是大项目,从零开发,那么需要分项目+共享库的架构开始设计,最终决策取决于你自己对项目的进度把控以及需求裁减。


如何让工程同时支持在iPad和iPhone上运行

将现有iPhone应用程序移植到iPad平台时,需要完成的大部分工作只是重新设计应用程序的UI以利用新的iPad UI组件。从一开始就遵循MVC设计模式,使你能将大部分开发时间集中到将UI转换到iPad上,而不是浪费若干小时重建整个代码库。但是MVC的重要性不止于此。是的,事情越来越复杂了……



iPhone SDK 3.2引入了一种新的通用应用程序格式。这为开发人员提供了一个简便的途径,可以发行同时包含iPhone和iPad版本的单个应用程序包--因此要使用相应的通用名称。如你所料,如果应用程序被下载到iPad上,就会运行iPad版;如果被下载到iPhone上,就会运行iPhone版。显然,也可以选择仅将应用程序编译为独立的iPad应用程序或iPhone应用程序。



那么现在,假设你决定将应用程序构建成通用应用程序。先展示一个基本示例,从iPhone OS Application模板中选择Window-basedApplication,并从相关产品菜单中选择Universal,用Xcode新建一个项目。

为项目命名后,出现的主Xcode项目窗口将是你花费最多开发时间的地方。你可能已经知道,Xcode IDE是苹果开发人员工具库的核心应用程序。在这里管理项目文件和资源,并通过iPhone Simulator或连接的设备调试和测试应用程序。


在Window-based Application模板的Universal版中,会注意到生成的默认项目将源文件组织成不同的文件夹。在Groups & Files列表中,特定于iPad的文件位于iPad文件夹,而特定于iPhone的文件位于iPhone文件夹(参见图2-5)。到目前为止,这与在同一项目内维持两个不同的代码库没有什么区别,但是先别急着下结论!看到共享的文件夹了吗?除了共享通用的.plist文件,Universal项目还可以共享通用类、数据库、资源并选择控制器和UI视图!



通过在iPhone和iPad版本之间共享通用类,不仅可以消除项目中的冗余代码,而且还更容易维护代码库。在添加某些需要在两个平台上都可用的新特性时,这点变得极其有用。而且如果有一天苹果公司决定将iOS扩展到另一个硬件设备配置,这可能会向你的Universal项目添加第三个平台,那么你又该怎么办呢?通过遵循MVC方法,代码库可以很轻松地适应未来的任何平台。


0 0
原创粉丝点击