基于Cocos2D的IOS游戏开发进阶与实践 —— Stage 1 —— 学习笔记

来源:互联网 发布:图片转word软件 编辑:程序博客网 时间:2024/06/06 14:00

Xcode开发环境讲解


General页面






这一部分会根据iPhone和iPad的不同略有区别





可以针对不用屏幕不用分辨率设置App图标





Launch Image是应用启动后的第一张画面,根据苹果要求每个App启动都应该有一张静态图片






IOS操作系统要用到的一些framework和库文件





Build Settings页面

包含了build这个工程所有的设置

一般只需要修改一部分自己需要的设置

比如让编译器去指定的路径下寻找头文件,可以添加自己的头文件搜索路径




Build Phases页面






Debug调试


开发版和release版区别在于release版会对程序做一些优化,如果在release版debug的话可能会产生一些奇怪的现象,所以应当在开发版本下debug调试程序


调试时可以通过命令打印相关变量或者对象的值



p命令是打印变量值:p+"空格"+变量名 

po命令是打印对象(一般打印出的是对象的地址):po+"空格"+对象名



在开发程序时,可能有免费版、付费版等版本的区别,但是维护多套代码无疑是不明智的

IOS可以通过定义不同的Target版本来实现这个功能




可以添加多个TARGET版本,它们共享维护同一套源代码

不同的TARGET版本只需要定义不同的宏定义就可以进行区分

代码中只需查看某个TARGET中某个宏定义是否被定义了就可以区别





有时候不需要添加新的TARGET版本,可以再不同的TARGET版本上点击右键,选择Duplicate

表示在这个TARGET版本的基础上创建一个TARGET版本



运行时可以选择不用的TARGET版本,也可以选择运行到不同的设备上





点击Edit Scheme可以选择运行DEBUG版还是RELEASE版








一般来讲,DEBUG版比RELEASE版运行速度慢(RELEASE版会优化)

,可能在debug时产生时序的问题,同时在多线程中也会产生时序问题

所以RELEASE版可能打印log的效果会比debug的效果更好




版本控制


新建项目时会询问是否将项目添加到git中






可以在项目中查看代码的改动




可以查看到当前版本与历史上任意的版本的比较,或任意的两个历史版本的比较



ps:文件右边的M代表有改动


但一定要记得多提交版本,才能有更多的版本进行比较



ps:可以选择多个文件同时commit


可以填写版本信息




如果发现改动有误,可以通过Discard恢复之前的版本



Discard与Commit一样,也可以同时对多个文件进行操作


但一定注意,Commit出错可以通过Discard撤销,

但如果Discard后发现之前的版本仍然需要就无法再找回了




Source Control选项下还有很多其他版本控制的选项

比如push和pull是与远程服务器版本控制时使用的提交和下拉代码的工具

使用commit进行提交,还可以选择不同的Branch



可以选择一些免费的代码仓库保存代码,例如bitbucket




长按运行按钮,可以看到更多的运行代码的选项



Test如果使用了IOS提供的Test解决方案写了Test代码可以使用这个功能


使用Profile运行代码会重新编译代码运行并同时启动instruments工具

instruments工具一项重要的功能就是监测内存泄露和内存的使用情况





这些工具中Allocations和Leaks都是跟内存相关的



看一下Allocations和Leaks

Allocations是分配内存的情况




如果有内存泄漏时,可以再leaks中看到


点击箭头可以查看更多的信息


可以点击stop停止录制,再点击record继续录制


在File中可以使用save保存记录,保存为一个trace文件





除了Run,Test和Profile,还有一个Analyze

Analyze是对你的代码进行的静态分析,不同于编译,编译只是列出一些常见的warning,

而Analyze是进行的深入分析,报出一些可能存在的更多的问题,

但并不一定都是需要解决


例如

Analyze提示我们“Potential leak of memory pointed to by ‘ptr’”,表示定义的ptr由于没有被释放可能会有内存泄露问题

但实际上ptr定义了以后,_point_array添加了对这个对象的一个引用的指针,以便使用,如果释放掉就会出错







打印Log

debug的方式不好的地方是需要程序停止下来,单线程没有关系,多线程可能会出现一些问题

所以打印Log能在Output窗口打印出相关信息,观察程序运行情况


介绍两种打印Log的方法

第一种是NSLog语句

凡是以NS开头的语句都是苹果提供的API或语句

NSLog可以采用printf风格的打印方式


第二种是Cocos 2D提供的CCLOG语句

CCLOG也可以像NSLog一样进行打印



CCLOG与NSLog的区别是CCLOG只在DEBUG版本才会打印,而NSLog不区分

所以在程序开发中尽可能使用CCLOG进行打印(当然是使用Cocos 2D开发游戏的时候啦)





认证和注册

xcode本身是免费的,在模拟器上运行也是免费的

然而如果在真机上运行应用或者游戏,甚至放在apple store上售卖则需要认证


认证分为个人和企业,99美元/年




在developer.android.com中登陆member center,使用apple id登陆





Dev Centers有一些开发帮助


最重要的是Certificates, Identifiers & Profiles 和 iTunes Connect两项






我们看到认证可以分为三种:针对IOS APP、针对Mac App,还有一种基于web扩展的开发认证



Certificates 认证   


这里认证分为两种:Development 开发的认证 和 Production 产品的认证


Type中有一些是APNs(Apple Push Notification Server)的类型,这是推送消息的认证,每一个应用都需要单独申请



Identifiers  Id  

有了认证就可以申请应用的Id

最下面这个*是系统自动添加的,比如下载了一个小例子,不需要再添加ID,*代表通配符,可以直接运行


应用的ID必须是一个唯一的字符串,可以随意添加


Apple Id Prefix 是苹果自动加的一个前缀


前缀是加在Bundle上的,所以即便与其他应用的相同也没关系,有前缀予以区分



创建时还有一些其他服务,比如数据保护,是否推送等等




Devices 设备 

如果希望项目能够运行在设备上,就需要添加设备



添加一个设备非常简单



UDID是一个设备的唯一标识


在iTunes中,点击序列号就会显示UDID



右键就能进行复制


不得不说apple做的东西就是棒!


复制到添加device的地方即可




个人的developer每年可以添加100个device(还是蛮多的)



Profile是一组文件,一组设置


每一个程序在开发过程中要申请一个profile,发布的时候也要申请一个profile

将这个profile的文件添加到xcode中,指定程序运行时使用哪个profile,

这样应用才能在你授权的设备上运行


profile还包含着对一个应用编译完成以后可执行文件的签名,在哪些设备上可以运行




profile有3种


开发使用的,发布使用的,以及测试使用的


选择以后,要一次的选择之前三项的项目id,认证(开发模式和发布模式对应的)和设备(发布没有选择设备)

起一个名字,然后下载即可,文件后缀为mobileprovision



由于profile中需要添加认证信息,所以不要随便的删除认证的内容



如何使用认证呢?

首先创建项目时要将bundle identifier与网站上建立的认证保持一致

然后找到Build Settings —— Code Signing —— Provisioning Profile



我们还是可以看到这个带*通配符的profile

这个profile可以运行一些小的demo,但是不适用于以后需要发布的项目

在other中可以找到对应项目的profile添加到列表中即可,这样项目就前面了





Ad Hoc和App store版本不用在这里设置,在打包的时候指定即可


Archive是打包的意思,会重新编译你的项目,并生成一个ipa结尾的包,可以在设备上运行



点击Distribute,可以选择打包成App store版,Ad Hoc版,或者一个不签名的版本

选择对应的Profile就可以打包成功了



如果是Ad Hoc

生成的ipa的包需要与mobileprovision文件一起发送给测试团队才能进行测试(mobileprovision只需添加一次,更新版本不需要)

将两个文件拖拽到iTunes的应用程序中,然后安装到设备上即可





如果要将应用提交到App Store

需要登陆到itunesconnect.apple.com




可以管理已有的App,也可以添加新的App










App Name是显示在App Store中的名字,不能跟其他应用名称相同

创建后,App Name只保留半年的使用权,如果不上传任何包的话,将会收回该名称,并且不能再拥有此名称


SKU Name不会显示给用户看,是给开发者看的


Bundle ID一旦确定将不能更改






有效日期可以更改


price价格可以免费,也可以选择收费,例如tier 1就是1个单位货币,会有提示


是否为教育机构打折


还可以点击specific territories,选择只在哪些国家发布


这些信息都是可以修改的,即使提交了,大部分也是都可以修改的




version code要与程序中Build中的版本号相对应

Copyright是公司的一些信息

Category 分类  可能会有一些排行

下面还会有一些限制级别的Rating,例如是否有暴力,烟酒,以便针对不同的用户,还有特别针对kids

还有Metadata的描述,keyword关键词

Support URL是必须要填写的

还会要填写一些版权说明,测试账户,图标,截图(规定了尺寸)等


这样在程序的Archives中就可以生成App store版本,就能直接上传了(我感觉是)



可以管理应用,可以直接上传新版本


0 0
原创粉丝点击