开发苹果应用程序需要哪些准备
1. 准备工作
硬件环境:Mac一体机、Macbook、虚拟机,或者黑苹果
操作系统:OSX 10.7.3以上
开发工具:Xcode4.6以上,推荐Xcode5.0
苹果账号:开发者账号(个人账号99$,公司账号99$和企业账号299$),公司账号和企业账号申请需要邓氏码。
企业账号针对500人以上的内部in-house 安装方式。
开发语言:ObjectC2.0(目前支持内存自动管理),可以兼容C,C++。
开发论坛:
1,官网支持:
https:///library/ios/navigation/#section=Resource%20Types&topic=Sample%20Code
2,中国最大cocoa开发论坛
3,源码支持论坛
1. 开发流程
2.1. 认识IDE
Xcode 是用于构建Mac app 和iOSapp 的IDE,包含一整套完整的工具集。
Xcode 5 的这些工具比以往的版本更强大,能帮助您创建快速、高效,和外观精美的app。
利用Xcode 5,能够非常轻松地创建和运行测试、分析代码及监控性能。
下图是Xcode的主界面,每一块红色的区域代表某一块的功能显示。
图表1:XCode的主界面
Xcode作为开发IDE,包含的主要功能有:
Assistant Editor
“助理”按钮将编辑器分为两部分,创建了一个辅助窗格,它会根据您当前编辑的代码自动显示对您最有帮助的文件。
该按钮可以显示与标头对应的内容、超类、调用方、被调用方或其他有帮助的文件。
源代码编辑器
编写代码使用的编辑器非常专业,它具有高级的代码补全功能、代码折叠功能、语法高亮功能、消息泡泡功能。
消息泡泡可以显示警告信息,错误信息以及其他对上下文敏感且与代码一致的信息。
实现无需编写代码即可从内部设计和测试您的用户界面。
快速设计出原型,在Xcode 编辑器中以图形方式连接您的界面和源代码。
iOS Simulator
通过iOSSDK,Xcode可以在基于Mac 的iOS Simulator 中构建、安装、运行和调试Cocoa Touch 应用软件,从而获得高速的开发流程。
并且通过模拟器,可是实现各个设备和各个操作系统的版本的兼容性。
编译器
比较传统的GCC,可以说是脱胎换骨。
功能强大的C、C++和Objective-C 开放源LLVM 编译器已构建在Xcode 中,并可从“终端”获得。
借助此编译器,您的代码可以快速编译,并且由Apple 优化后,可以生成专为iPhone、iPad和Mac 中的CPU 调试的超快app。
图形调试器
在Xcode 编辑器内直接调试app。
将鼠标悬停在任何变量上可深入分析其内容,使用Quick Look 可查看其中包含的数据,或者右键点按将变量添加到监测列表中。
静态分析
您可以通过Xcode 的内建静态分析器在数秒内尝试上万种可能的代码路径,并报告可能依然隐藏或几乎无法复现的潜在错误,这样便可在真正运行应用软件之前就找出代码中的错误。
XCTest 框架
XCTestAPI 可以方便地构建执行应用软件功能的设备测试,能够在Mac、iPad、iPhone 或iOSSimulator 上运行。
资产目录
Xcode中的资产目录编辑器管理app 的图像,可将相同资产的各种分辨率图像分组归类。
构建时,Xcode将资产目录编译成最高效的最终分发包。
Instruments
告诉Instruments 分析哪个程序,使用哪个方法,然后只需点击红色大按钮,数据就会被收集并存储以待进一步分析。
2.1. 开发相关
可以根据项目的特性,通过自带的项目模板,创建项目。
图表2:项目模板
在项目的开发过程中,最常见的的是.h、.m的源代码的开发,图像界面控制storyboard的开发,资源imageset的编辑,以及第三方库的引入等。
如下图,普通源代码的编辑。
在OC中,是采用了完全面向对象的方式。
所有面向对象的方式在这里都能支持。
关于代码的规范可以参照苹果官方的建议
文档。
设计模式最主要的体现是MVC的方式,视图和业务逻辑的分离。
图表3:源代码编辑
Storyboard的设计模式是XCode4.6和iOS5.0中才引入的。
方便可视化地实现页面流程之间的跳转。
通过拖拽的方式实现固定页面流程的逻辑,并且也可以通过代码动态实现页面的流转。
图表4:Storyboard编辑
XCode通过imageset来实现资源文件的统一管理,在具体的实现中,拖过拖拽文件到对象的icon框中即可。
并且实现了1x和2x的兼容。
图表5:统一资源管理
运行库主要包括动态运行库和静态运行库,苹果官方规定只允许使用系统提供的动态库的,动态库的引入,如下图6所示。
而第三方的静态库主要是封装
号的代码库,主要包含.a文件和.h头文件,引入到工程目录即可。
2.1. 编译
早期XCode,在4.2之前一直采用GCC,作为开源世界的编译器标准,一直不错。
但是Apple对编译工具提出了更高要求,主要的分歧有:1,OC新增特性,GCC不买账,不实现;2,GCC代码耦合度高,不好独立。
最后,在OSX 10.6系统中,LLVM登上舞台,提供了与编译器相关的支持编译器优化,链接优化,在线编译优化,代码生成。
并且基于LLVM的编辑器Clang从零开始编写,兼容GCC,支持c/c++/OC/OC++的编译器,它主要的优点有:
1,快,AppGCC4.0 2.5x快
2,内存占用小,源码的130%,GCC 超过10x
3,诊断可读性强,错误源码提示,相关上下文的提示
基于库的模块化设计,GCC单一可执行程序,中间信息无法被其他程序重用。
Clang分成分离的几个阶段,AST信息可序列号
图表7:编译器进化图
在运行时,我们只需要简单地选择Target和目标设备,点击如下图的箭头运行,即可。
不同于Android模拟器,在iOS的模拟器运行速度非常快。
图表8:编译运行菜单
2.1. 单元测试常见的iOS测试框架有:1,XCUnit(内置):包括logic Tests白盒测试和Application Tests黑盒测试;2,Frank框架,模拟用户操作,偏向黑盒测试3,Fliptest框架,A/B测试,基于外观,测底解决UI问题
使用XCTest时,首先引入Xctest.framework。
每一个.m文件就是一系列的测试用例。
测试过程如下图所示:
图表9:测试流程图
通过快捷键Command+u启动测试,在测试失败时,将会定位到失败的语句上,如下所示:
图表10:测试例子
1. 上线流程
iOS的app开发在目前是审核最严格的,Apple主要考虑到如下的原因:1,严格把控AppStore整体质量;2,过滤色情等垃圾应用;3,保护用户隐私;
4,拒绝公网资源过度消费(CastCatcher网络广播软件)。
证书相关的认证也是iOS开发中最为困惑的问题之一,背后的原因:允许指定的硬件设备在有限的时间内运行指定的软件。
每一次启动app,系统检查app,确保被苹果和开发者运行
3.1. 证书相关
第一步,首先申请本机的数字证书:
图表11:申请数字证书
数字证书的的后缀为certSigningRequest,里面包含你的名字,email,公钥,密钥。
第二步,只有通过了数字证书,上传CSR,Apple才能发给你开发者证书或者发布者证书。
第三步,为你的应用,创建AppleID,如com.baidu.microtask
第四步,注册真机调试的设备
最后,我们将生成一个.mobileprovision的配置文件,双击安装即可。
图表12:官网证书配置
接下来,通过安装了.mobileprovision文件,我们就可以进行真机调试了。
在BuildSetting里面输入codesign进行对应证书的选择。
如下图所示:
3.1. 发布渠道
iOS的app发布主要有2种方式,Adhoc发布和AppStore发布。
Adhoc发布有如下两种安装模式,在下图的Distribute中进行选择。
1,普通模式(ipa,证书文件,通过itunes安装)
2,Enterprise(点击链接直接安装)
图表14:app发布
AppStore发布需要经过严格的审核:时间1周-3周均有可能;审核极其严格,产品策划,设计,开发均要准守开发者审核标准。
如下是一些常见的被拒原因
1,提供测试账号,审核人员不可能自己去注册
2,不能用到苹果的icon,或者热门的关键字,违反专利等
3,不能用到其他平台关键字,如Android等
4,不规范功能的使用,如AdSupport框架,Purchase框架5,最后切记配置文件,切换到线上环境。