iOS开发:对于Xcode的Open Developer Tool中常用功能使用的总结

整理一下Xcode菜单栏里面Open Developer Tool里面的功能,这里只介绍常用的几个功能的使用,剩余没有介绍到的功能模块请自行脑补。。。


根据Open Developer Tool菜单栏里面显示的从上到下的顺序开始介绍,请按顺序阅读即可。

一、Instruments工具


Instruments工具是iOS性能优化工具。对于程序员来说,程序代码性能是个老生常谈的话题,随着程序项目的不断增加功能和需求,不得不随时考虑到调试和优化代码,那么根据运用Xcode自带的监控调试工具就可以很好的解决这些问题,防范于未然,Instruments工具提供了很多功能,这里只介绍常用的部分,其他剩下的部分可以私下了解。


1.Core Animation:离屏渲染,图层混合等GPU耗时;

2.Energy Log:耗电检测工具;

3.Leaks:内存检测,内存泄漏检测工具;

4.Network:流量检测工具;

5.Time Profiler:CPU分析工具分析代码的执行时间。

使用Xcode > Open Developer Tool > Instruments 打开方式,还有一种是通过Xcode project打开instruments。这里举例的是打开Time Profiler的步骤。




(一)Core Animation动画渲染的使用:

Core Animation要注意的一点是必须是在真机调试的情况下使用,用于调试离屏渲染绘图动画等操作。调试的时候需要注意以下几个选项的勾选:


"Color Blended Layers":图层混合 ,显示出被混合的图层Blended Layer(是用红色标注),Blended Layer是因为这些Layer是透明的,系统在渲染这些view时需要将该view和下层view混合后才能计算出该像素点的实际颜色,所以红色越少越好。

“Color Hits Green and Misses Red":光栅化,图层缓存。很多视图Layer由于Shadow、Mask、Gradient等原因渲染很高,因此UIKit提供API用于缓存这些Layer:[layer setShouldRasterize:YES],系统会将这些Layer缓存成Bitmap位图供渲染使用,如果失效时便丢弃这些Bitmap重新生成。所以红色越少越好,绿色越多越好。

"Color Copied images":图片颜色格式,标注应用在绘制的时候被Core Animation复制的图片。

"Color Non-Standard Surface Formats":不标准的表面颜色格式。

"Color Immediately":颜色刷新频率,Instruments在执行color-flush操作的时候,取消10毫秒的延时

"Color Misaligned Images":图片大小,图片缩放MisalignedImage表示要绘制的点无法直接映射到频幕上的像素点,此时系统需要对相邻的像素点做anti-aliasing反锯齿计算,增加了图形负担,通常这种问题出在对某些View的Frame重新计算和设置时产生的。

"Color Offscreen-Rendered Yellow"离屏渲染Offscreen-Rendering离屏渲染意思是iOS要显示一个视图时,需要先在后台用CPU计算出视图的Bitmap,再交给GPU做Onscreen-Rendering显示在屏幕上,因为显示一个视图需要两次计算,所以这种Offscreen-Rendering会导致app的图形性能下降。所以黄色越少越好。

"Color Compositing Fast-Path Blue":快速路径,标记由硬件绘制的路径

"Flash Updated Regions":重绘的区域,重绘就是指使用Core Graphics绘制,绘制会损耗一定的性能,因此重绘区域应该越小越好。

(二)Energy Log耗电量检测的使用:

Energy Log耗电量检测,必须要真机调试才能使用。手机运行程序之后,双击打开Energy Log,然后直接点击左上角红色圆点按钮开启检测,然后在左侧菜单栏里面可以看到CPU活动的比例、网络活动的比例、亮度状态、手机睡眠状态、蓝牙连接状态、手机WiFi连接状态、GPS状态等这些能够消耗手机电量的组成部分,可以根据对应模块的数据来检测耗电量的情况,如图所示:


(三)Leaks内存调试的使用:

Leaks的一个进程占用的内存空间,包括5种数据区:
(1)BSS段:一般存放未初始化的全局变量;
(2)数据段:一般存放已初始化的全局变量;
(3)代码段:存放的是程序执行代码;
(4)堆:存放进程运行中被动态分配的内存段,如OC对象;
(5)栈:由编译器自动分配释放,存放函数参数,局部变量;

Leaks是iOS程序中用来检测内存泄漏的工具,根据Leaks可以帮助我们查找项目中的内存泄漏防止程序内存耗过大被挂起。首先双击打开Leaks点击左上角红色圆点按钮开始运行,并且在Details中选中CallTree选项具体效果如下图所示


接着程序运行,我们可以根据边的进度条来查看内存变化区域,Leaks工具按照时间把所耗内存的大小都以填曲线充图的形式展现移动鼠标曲线填充图的位置时,会直接显示出那一时刻所占用的内存大小如果内存曲线填充图下方显示出红色叉号则代表该处存在内存泄漏可通过鼠标在填充图中圈区域,时下面的Call Tree就会打印出对应的函数堆栈调用以及所占内存大小的详细信息,双击可进入到对应的代码区域来查看如下图所示


鼠标双击函数名称,可以进入到代码对应的具体位置,查看具体情况:


爆红的区域就是测试出来的异常情况的位置。

(四)Network网络检测的使用

Network网络流量检测工具,双击打开Network,直接单击左上角击红色圆点按钮运行程序,在上面可以看到手机网络的输入输出大小的多少,用鼠标拦截住一块区域就可以查看这个区间是App发生的网络消耗还是其他进程发生的,还可查看网络请求的本地地址和服务地址输入和输出的大小等信息,具体情况如下图所示


上图红框中画出的一片消耗网络资源的地方,然后在Details中选择三个选项中的不同选项,第一个:Processes,表示查看网络进程,也就是APP和其他程序使用的流量的总大小;第二个:Connections,表示所有的访问网络请求的端口、输入输出的大小、本地地址、数据包的大小、往返的时间等信息;第三个:Interfaces,在使用者的角度查看当前手机的整体网络的使用情况,这里不区分线程,只区分网络使用类型WiFi或者流量。

1、第一个选项:Processes:


通过上图可以看到,分为两个部分:一部分是APP,另外一部分是其他的进程,分别显示的模块是:Process:进程名;Data In:请求数据大小;Packests In:请求数据包的大小;Data Out:发送数据的大小;Packets Out:发送数据包大小;Duplicate Data Recv:重传数据的大小;Out-of-Order Data:传输失败数据的大小;Retransmissions:网络重传的次数。

2、第二个选项:Connections:


这个模块,是把所有的网络请求发生的数据交互明细都打印出来了,然后可以根据打印的这些数据信息,查看详细情况,相对于第一个Processes选项,多出来了四个选项:Local:本地访问的地址;Remote:远程服务的地址;Shortest Roundtrip:最短往返的时间;Avg. Roundtrip:平均往返的时间。

3、第三个选项:Interfaces:


Interfaces主要展示的是手机网络使用情况,其中Interface:显示的是网络环境(是WiFi还是流量);Connections:显示的是总体连接次数;剩下的部分同上面两个部分表示的意思相同。

(五)Time ProfilerCPU分析工具分析代码的执行时间:

Time Profiler,时间分析工具,按照设定的时间间隔(默认1毫秒)来跟踪每一个线程的堆栈信息(stacktrace),通过对比时间间隔之间的堆栈状态,推算出某个方法执行的时间,会给出一个近似值。鼠标双击Time Profiler,进入到调试界面,单击左上角红色圆点按,便可以看到程序的时间消耗,如图所示:


分析上图会发现,这些信息只是显示到线程Runloop的耗时,并不能确定到具体的代码位置,那么就需要在设置菜单栏里面找到Call Tree选项中进行具体操作,默认情况下载Call Tree中只会勾选第二个选项,如下图所示需要勾选前五项才能定位到关键具体的代码位置:


那么介绍一下这前五项都代表的具体含义:

1.Separate by State:按状态分开做分析;

2.Separate by Thread:按线程分开做分析,线程分离这样才更容易发现那些消耗资源的问题线程,只有这样才能在调用路径中能够清楚看到占用CPU最大的线程。尤其是对于主线程,要处理所有的接口数据,一旦受到阻塞,程序必然会出现卡顿或停止响应的情况;

3.Invert Call Tree:反向的输出调用树,从上到下跟踪堆栈信息.这个选项可以把调用层次最深的方法显示在最上面,更方便容易找到最耗时的操作,快捷的看到方法调用路径最深方法占用CPU耗时,比如FuncX{FunY{FunZ}},选择该选项之后,堆栈以Z->X->Y把调用层级最深的C显示在最外面;

4.Hide System Libraries:隐藏系统库文件,勾选该选项后,耗时调用路径只会显示APP耗时的代码,也就是只显示自己的代码调用,注意有些代码耗时也会纳入系统层级,可以进行勾选前后对执行路径进行比对,效果会更好;

5.Flattern Recursion:拼合递归函数,将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条,也就是每个堆栈跟踪一个条目。

二、Simulator模拟器

这个工具想必做iOS开发的是最先知道的吧,也没什么太多需要注意的地方,这里就简要介绍一下怎么打开使用就行了。手动打开Simulator模拟器,通过 Xcode->Open Developer Tool->iOS Simulator打开


下面介绍一下Simulator基本设置的方法

1.点击“Reset Content and Settings...”选项,相当于手机的恢复出厂设置,模拟器之前运行安装的所有APP都会被清除掉


2.在Hardware中打开“Keyboard”选项,把子菜单栏中不选择第二项,就把虚拟软键盘关掉了,然后就可以使用电脑的键盘了


3.直接把电脑中的图片拖入到模拟器中,图片就会存入到模拟器相册中,感觉这个功能很实用,可以试试



4.调整模拟器显示的比例大小

两种方法,第一种直接用快捷键调整模拟器显示的大小,快捷键:“command” +1、“command” +2、“command” +3、“command” +4、“command” +5;第二种方法直接在模拟器设置里面调整,如图所示:


5.修改定位,自定义位置,地图的定位

找到Debug中的Location中的第二个选项:“Custom Location...”,然后输入需要定位的经纬度即可修改成功,具体操作如下图所示:




6.设置模拟器的语言

打开模拟器,找到Settings(如果没有返回到模拟器的首页界面,使用快捷键:command+shift+h,可以直接进入首页,相当于home键),进入Settings界面之后,点击第一项“General”;进入General界面之后,选择“Language & Region”;进入Language & Region界面,然后选择“iPhone Language”;进入iPhone Language界面,根据情况选择对应的语言,选完之后点击右上角的“Done”按钮,会弹出一个弹框,选择“Change to ...”,然后稍等几十秒即可修改成功,具体操作如下图所示:









写到这里,Simulator模拟器常用的设置讲解到此结束,有哪位大牛想要补充的,可以指正,共同学习。

三、Simulator(Watch)模拟器


由于本人没有做过Apple Watch的开发,所以对于它的模拟器的设置也不很懂,只是运行打开过而已,我就把我知道的一些知识贴出来,仅供参考。

下面是Simulator(Watch)模拟器打开的效果图:



然后再分享一个Apple Watch应用对象的结构图:


然后就介绍完了,等啥时候涉足Apple Watch开发了,再分享更深的知识,如果有知道更多关于此方面的知识的大牛,可以交流指导。

四、Accessibility Inspector检测工具

Accessibility Inspector是Xcode系统自带的一款检测工具,用它来检测APP控件元素的层级结构,使用它可以快速地获取各个控件元素的层级,这样可以在UIAutomation里面实现相应的自动化。


使用Xcode > Open Developer Tool > Accessibility Inspector 打开,会弹出来“Accessibility Inspector” 操作界面,然后在模拟器上运行程序,然后在Accessibility Inspector选择具体操作,比如在检测对象栏里面,选择模拟器,然后在择Accessibility Inspector工具栏中的瞄准图标,然后单击图标会变成蓝色,然后鼠标轻移到模拟器窗口,即可看到APP界面的相关详细信息,具体如图所示:







然后介绍一下Accessibility Inspector检测工具的三部分模块,第一个模块,也就是主要运用到的,展示检测信息详情的,它和那个搜索按钮配合使用,具体如图所示:


第二个模块,Audit(审计)模块,目测不常用,所以只介绍怎么使用即可,具体如图所示:


第三模块,Settings模块,就是设置一下你检测时候需要的效果,比如分为四个组成选项:“Invert colors”、“Reduce transparency”、“Reduce motion”、“Font size”。

Invert colors”:显示调节反转颜色,相当于黑暗模式;

Reduce transparency”:降低透明度,也就是把磨砂透明效果关闭;

Reduce motion”:减少动态效果,减少不必要的动画;

“Font size”:设置文字大小。

另外补充,底部右下角那个“Restore Defaults”: 恢复默认值。


具体的效果如下图所示:



五、FileMerge文件比较查看工具

FileMerge文件比较查看工具,也就是对比两个文件里面的内容,找出两个文件之间的不同点;或者是同一个文件,在未修改代码提交前的状态,和代码已经修改提交后的对比,查看修改部分。打开FileMerge文件比较查看工具,有两种方式。

第一种打开方式,是直接在应用程序中找到Xcode,然后点击右键,选择“显示包内容”选项,会打开“Contents”文件,在“Contents”文件找到“Applications”文件,打开Applications”文件,找到FileMerge文件比较查看工具,双击打开即可,具体如图所示:



第二种打开方式,可以直接在Xcode的Open Developer Tool中找到FileMerge打开,如图:


打开FileMerge文件比较查看工具之后,会弹出工具弹框,如图所示:


然后根据左侧的两个选择按钮“Left...”和“Right...”,然后点击这两个按钮选择你想要对比比对的文件夹或者具体的类文件,然后点击右下角“Compare”按钮,即可实现对比文件的操作,在这里我只做两种情况(还有其他情况)的介绍:一种是同一个文件夹下具体的两个类文件作比较,另一种是对比两个文件夹中相同的两个文件的比较,具体如下所示:

1.同一个文件夹下具体的两个类文件的比较的操作方法:




左箭头表示取左边,右箭头表示取右边,如图选中Left后可以按键盘的←、→键来更改方向,然后按↓键跳到下一处继续选择左右,全部选择完毕后,Command + S保存,这时提示你选择一个新目录用来保存新生成的新合并的文件,然后Command + W关闭当前窗口即可,也可以用全选快捷键,Command + A全选所有的不同的地方,然后按←、→键来更改方向

2.对比两个文件夹中相同的两个文件的比较的操作方法(需要你双击需要对比的那个具体文件的操作才行):




六、Application Loader打包上传工具

Application Loader打包上传工具对于每一位开发人员来说并不陌生,但是在这里我还是要介绍一下它的使用方法,以及自己的一些使用心得,如有不妥之处,还请指正。

首先介绍打开的方式,如果Xcode里面没有Application Loader工具,就需要去下载,下载安装之后打开,依然是使用Xcode > Open Developer Tool > Application Loader打开即可,具体如图:


打开之后,会弹出登录Application Loader界面,如果之前没有登录过,就需要输入苹果开发者账号和密码,然后登录,如果登录过,它会默认进入上次登录过的那个账号,具体如图所示:




然后点击“选取”按钮,然后找到桌面上面放的打包成功的ipa压缩包,然后选择ipa包,然后“打开”即可,如图:


选择ipa压缩包之后,Application Loader会复查APP资料,复查成功之后,点击“下一步”就可以提交上传苹果服务器上面啦,如图:




在等待了提交ipa包之后,一般是十分钟以内,如果上传成功,就会提示“谢谢您”,然后下面还有一段话,然后点击“完成”即可,这样ipa包就算是上传成功了,


然后等着审核通过,然后再在itunes connect选择构建版本,提交审核即可。可以在itunes connect的“活动”里面查看上传ipa的状态,然后进行更新上传版本的操作,如果上传成功之后,在构建版本那里点击“+”,可以直接选择版本,如图:


写到这里,Xcode的Open Developer Tool中常用功能使用基本算是介绍完了,基本上都是自己的见解,有什么不足还请大牛指正,欢迎交流。然后下面再附加两个常用的Xcode的工具。

1.打开xcode 的organizer界面:



2.进入xcode 登录开发者账号,Perferences界面:





最后再介绍一下添加Xcode的Open Developer Tool中常用功能的方式,就是点击Open Developer Tool中的“More Developer Tools...”选项,然后会自动打开浏览器,登录苹果开发者账号,然后进入苹果开发者官网,然后在里面添加新增即可,如图:







猜你喜欢

转载自blog.csdn.net/cc1991_/article/details/70158723