iOS开发常见问题若干

一:如何打包并分发安装?

我们都知道,为苹果开发应用需要通过苹果审核并在App Store上架,但审核周期极为漫长,同时如果需要在发布前,想通过内侧的方式对自己的应用进行测试,都需要用到程序的打包方式,下面,介绍几种主要的打包方式:

  • 分发安装包供越狱机使用
程序打包前,需要有与应用对应的App ID以及对应的Distribution版本的Provisioning File, 注意,一定要是Distribution版本的,Deployment版本的Provisioning File有效性很短,不能用作正是发布。

第1步:设置代码签名

在iOS设备上运行的代码都必须有签名,点击项目名(左侧导航栏中最上侧的蓝色图标),会显示出Projects及Targets两个选项卡,分别将其中的Build Setting中的Code Singing中的Release部分选中为我们的Distribution版本Provisioning File,如下图所示
iOS开发常见问题若干_第1张图片

第2步:生成Archive文件

将运行设备从模拟器设置成iOS Device, 可以不用连接设备,但必须选择成iOS 设备,否则下面步骤无法进行。
店家Products -> Archive,如果签名设置正常,签名、编译过程会正常的持续一段时间,成功后,会弹出Organizer,并将刚刚进行的Archive文件显示出来。
点击"Distribution"按钮,会弹出三个选项,如下图:
  iOS开发常见问题若干_第2张图片
第一个选项用作向App Store正是提交用,这里我们用不到,第二个选项后面会用到,这里我们也暂且不提,选中第三个选项,将Archive文件导出,然后保存。
在桌面(默认路径)找到感刚刚找到的后缀名xcarchive的文件,右键选择,点击“显示包内容”,将Product -> application 下的名为项目名称的文件拷贝出来。

第3步:生成iPA包
打开iTunes,将刚刚拷贝出来的名为项目名,后缀名为app的文件拖拽到iTunes的资料库中(界面左上角), 在资料库-> 应用-下找到我们刚刚拖拽进去的应用,右键选择,选择在Finder中显示,可以看到一个ipa安装包,此文件便是我们将要分发给越狱用户的安装包了,此文件其实与审核通过后从App Store中下载的安装包没有区别。


  • 制作Ad Hoc包供内测
针对个人开发者,如果开发者想在应用上架之前进行对应用进行内侧,可以通过Ad Hoc方式进行分发,这种方式下的测试机不需要越狱。
AD Hoc安装包生成方式很多,具体请参考 此文
第一:可测试的设备最多只有一百台,且需要提前提供设备的identifier,开发者在provision中将此设备的identifier添加到provisioning file中。
第二:Ad Hoc安装的过程中需要开发者提供provisioning file


  • 制作企业分发包
针对企业开发者账户,也可以将应用选择为企业内分发安装,而不通过苹果的应用商店,设备不需要越狱。
企业安装包打包的过程中大体步骤没有太大区别,无非是在Organizer中点选Distribute后,选择第二个选项进行打包。安装过程参考 此文,注意!如果是企业安装包,那么并不要求设备一定越狱。企业分发包只能由企业开发者账号进行,普通开发者无此权限。


二:Xcode debug log无法显示中文

默认情况下,当调试器为LLDB时,NSLog输出函数是无法显示中文的,如果将调试器换回GDB,中文可正常显示,更换方法如下图所示:



注意更换调试器后,会有下面两个问题:
1:编译时会有调试器相关的警告
2:使用GDB调试,速度较LLDB确实有下降


三:模拟器调试 vs 真机调试

  • 功能性开发时,两者基本没区别,模拟器的使用稍显便利,机器上最起码不用老插着设备,编译运行的速度也较真机要快,同时有些应用情景模拟器模拟起来比较方便,比如内存警告这种错误,想在真机上模拟出来还是比较困难的。
  • 模拟是在PC机上模拟的,运行环境,包括CPU速度,可用内存等较真是设备都有很大的优势,所以,并不能将应用在模拟器上的性能表现认为是应用的真实表现。
  • 有些功能只能在真机上测试,比如APNS,比如多点触摸手势,这时模拟器就无法胜任了
  • 架构的不同(x86 vs ARM)造成了内存管理上的些许不同,所以,在调试内存相关问题时尽量使用真机
四:SVN删除新添加,且未commit的文件

如果一个文件新添加,且未commit,那么如果想删除此文件,首先点击右键-> source control -> discard changes.
此动作也就是执行了svn revert命令,但为什么xcode删除文件未将svn revert 及svn delete这两个命令捆绑到一起就不得而知了。

五:如何将crash log符号化

首先电脑内要有crash log对应应用发行版的archive,这样,将设备接入后,crash log自动会将费解的地址符号变成可读性更高的函数名符号表。
如果没有设备,而只有crash log,可将crash log手动的import到organizer中log中。

你可能感兴趣的:(ios,xcode,File,Crash,Deployment,archive)