Objective-C 基础教程第七章,深入理解Xcode

目录
  • Object-C 基础教程第七章,深入理解Xcode
    • 0x00 前言
    • 0x01 创建工程界面
    • 0x02 主程序界面
      • ①顶部 Top
        • Test(测试)
        • Profile(动态分析)
        • Analyze(静态分析)
        • Git
        • Scheme
      • ②左边 Left
      • ③中间 Center
      • ④底部 Bottom
    • 0x03 菜单
      • Xcode菜单
        • About Xcode(关于)
        • Xcode Extensions(扩展)
        • Xcode Developer Tools(开发工具)
        • Services(服务)
        • Preferences(首选项)
          • General 常规
          • Accounts (账户)
          • Behaviors (行为)
          • Navigation (导航)
          • Themes (主题)
          • Text Editing (文本编辑)
          • Key Bindings (热键)
          • Compoents
          • Locations
      • File菜单
      • Editor菜单
      • View菜单
      • Find菜单
      • Editor菜单
      • Product菜单
      • Debug菜单
        • F7单步步入
        • F6单步步过
        • 显示汇编代码
    • 0x04 项目属性
      • General (常规设置)
          • Identify (身份信息)
          • Deployment Info (部署信息)
          • App Icons (图标)
          • Frameworks,Libraries,and Embedded Content
          • Development Assets
      • Signing & Capabilities (签名和权限)
      • Resource Tags
      • Info (App清单)
      • Build Settings (Xcode环境变量)
      • Build Phases
      • Build Rules
    • 菜鸡PWN小分队

Object-C 基础教程第七章,深入理解Xcode

0x00 前言

嗨!大家好啊。今天我又来学习了,现在终于把前面一些OC的基础学完了。现在我们可以来开始折腾Xcode了。

书中介绍的Xcode是4.3.2版本的,而我们这Xcode目前已经是Xcode13了,所以书上的知识应该是已经过时了,所以我决定自己找网上Xcode13的教程并且动手摸索。

0x01 创建工程界面

当我们点击创建工程后,会出现如下的界面。

Objective-C 基础教程第七章,深入理解Xcode_第1张图片

其中平时我们创建工程,一般都只要创建iOS和macOS的就行了,像wathcOS和tvOS都是手表和电视机的,其他的一般也用不到。

创建工程后,会出现如下的界面,分别意思是你要填写一个属于你的Identifiler,比如我的如下所示,这个主要是和安卓一样用来区分包名的,然后你再Product Name里面写入你要创建的工程,接着在最下面可以选择你要开发的语言,比如OC或者是Swift。

Objective-C 基础教程第七章,深入理解Xcode_第2张图片

0x02 主程序界面

Xcode中一共有,上、中、下、左、右的界面。我分别标记成了①②③④⑤。

Objective-C 基础教程第七章,深入理解Xcode_第3张图片

①顶部 Top

顶部的这个按钮,可以将左边的的界面给隐藏起来,让你更方便的编写和看代码。

image-20220319163322589

这两个按钮分别是,停止程序运行和运行程序。

image-20220319163831184

Test(测试)

当我们长按三角形运行按钮的时候,会出现如下的界面,比如Test和Profile和Analuze.

Objective-C 基础教程第七章,深入理解Xcode_第4张图片

运行Test会对程序界面进行一些测试,比如多次关闭,模拟点击等等(这里如有错误或者补充,欢迎评论谢谢。)

Profile(动态分析)

运行Profile的话会出现如下的界面。

这界面的工具是叫Instruments动态分析工具,他可以根据你选择如下的模板进行一些测试,比如说是否有内存泄露,跟踪内存、CPU和文件系统。

Objective-C 基础教程第七章,深入理解Xcode_第5张图片

比如当我们选择Time Profiler时候会出现,启动耗时的跟踪程序,他会从程序启动开始将所有的函数调用都显示出来,也就是调用堆栈,并且还会显示每个函数执行的耗费时间等等。

Objective-C 基础教程第七章,深入理解Xcode_第6张图片

然后这里比较有用的我觉得应该是File Activity,能监控程序的文件操作,比如我这里选择进程为微信,然后就可以看到微信操作过哪些文件的记录都显示出来了,而且还能显示出open read write等函数的调用堆栈,对逆向分析来说帮助很大。

Objective-C 基础教程第七章,深入理解Xcode_第7张图片

Analyze(静态分析)

静态分析,这个是可以找出代码的错误,比如逻辑错误,声明错误等等也就是编译前可以先用Analyze看看是否有错误,这样比直接编译速度要快就能找到错误的地方。

Objective-C 基础教程第七章,深入理解Xcode_第8张图片

Git

顶部还有按钮可以切换Git的分支。

Objective-C 基础教程第七章,深入理解Xcode_第9张图片

Scheme

这个有点类似Vistual Studio里面的编译设置,这里可以设置比如Build时候执行一些shell命令,比如这里我在他Build的时候弹出一个计算器。

Objective-C 基础教程第七章,深入理解Xcode_第10张图片

Objective-C 基础教程第七章,深入理解Xcode_第11张图片

然后再往右边就是选择构建平台。

Objective-C 基础教程第七章,深入理解Xcode_第12张图片

再右边+号,可以自定义一些代码片段,并且可以搜索。

Objective-C 基础教程第七章,深入理解Xcode_第13张图片

②左边 Left

左边是一个文件浏览器,可以很方便的用来浏览当前项目的所有文件和分组。

Objective-C 基础教程第七章,深入理解Xcode_第14张图片

右键他的菜单如下,比较有用的功能就是可以在Finder中打开,然后可以添加新文件,然后New Group without Folder,可以新建群组但是不创建真实的目录。

Objective-C 基础教程第七章,深入理解Xcode_第15张图片

还有个Add Package,可以添加依赖包源,类似Python的pip或者是C#的 Nuget。

Objective-C 基础教程第七章,深入理解Xcode_第16张图片

然后是工具栏这里,第三个图标这个可以查看方法的属性和实例变量。

Objective-C 基础教程第七章,深入理解Xcode_第17张图片

然后是搜索图标,可以搜索对应的文本。

Objective-C 基础教程第七章,深入理解Xcode_第18张图片

其他的就是在调试的时候,当前断点的位置等等。

Objective-C 基础教程第七章,深入理解Xcode_第19张图片

③中间 Center

然后是中间界面,这个主要是用来显示代码的,其中左边红色标记位置可以用来选择文件,然后右边标记位置可以拆分代码窗口为两个等等,然后它左边还可以设置一些编辑框的属性,比如显示小地图等等,其他好像也没什么特别的了。

Objective-C 基础教程第七章,深入理解Xcode_第20张图片

④底部 Bottom

底部基本都是调试输出的内容,当我们断点断到后,可以在左边看到变量的值,在右边可以看到程序的输出内容。

Objective-C 基础教程第七章,深入理解Xcode_第21张图片

然后还有就是Bottom上面工具栏里面的那些小图标,其中基本都是和调试相关,可以点击图标进行步过、步入、跳出。还有3D方式显示界面和查看线程调用堆栈。

Objective-C 基础教程第七章,深入理解Xcode_第22张图片

还有这个能显示详细的堆栈和变量信息,暂时不知道具体用途,好像挺强大的样子。

Objective-C 基础教程第七章,深入理解Xcode_第23张图片

然后Thread这里,有方法调用之间的调用堆栈。

Objective-C 基础教程第七章,深入理解Xcode_第24张图片

0x03 菜单

OK,接着我们来看最复杂的菜单,我们挨个将菜单的功能都看一遍。

image-20220320135432171

Xcode菜单

Xcode菜单功能如下,About Xcode是用于显示Xcode的版本信息,然后Preferences...比较重要里面有很多功能,接着就是Open Developer Tool包含了Xcode开发的工具,比如模拟器还有前面介绍过的InstrumentsService里面则是Instruments里面的功能,比如监听文件,监听网络。

Objective-C 基础教程第七章,深入理解Xcode_第25张图片

About Xcode(关于)

Objective-C 基础教程第七章,深入理解Xcode_第26张图片

Xcode Extensions(扩展)

Xcode的扩展。

Objective-C 基础教程第七章,深入理解Xcode_第27张图片

Xcode Developer Tools(开发工具)

Objective-C 基础教程第七章,深入理解Xcode_第28张图片

Services(服务)

Objective-C 基础教程第七章,深入理解Xcode_第29张图片

Preferences(首选项)

General 常规

这里的常规设置,主要设置界面的黑暗和白色,然后Issues可以设置在源码中还是不在源码中显示等等。

Objective-C 基础教程第七章,深入理解Xcode_第30张图片

Accounts (账户)

账户里面可以添加你的苹果开发者账号

Objective-C 基础教程第七章,深入理解Xcode_第31张图片

然后Manage Cerificates里面可以管理你的证书,你可以添加新证书。

Objective-C 基础教程第七章,深入理解Xcode_第32张图片

Behaviors (行为)

行为设置,比如有Issue的时候显示错误信息。

Objective-C 基础教程第七章,深入理解Xcode_第33张图片

这个应该是属于代码上的一些辅助提示设置。

Objective-C 基础教程第七章,深入理解Xcode_第34张图片

比如当我按住Command/Windows按键,然后点击函数的时候,就会显示这个提示框,你可以选择对应功能:跳转到定义、显示帮助信息、谁调用这函数的等等。

Objective-C 基础教程第七章,深入理解Xcode_第35张图片

然后按住Alt/Option按键,在点击方法的时候,就会显示此方法的文档信息。

Objective-C 基础教程第七章,深入理解Xcode_第36张图片

Objective-C 基础教程第七章,深入理解Xcode_第37张图片

Themes (主题)

这是Xcode的主题,内置的主题好像都不怎么好看,我推荐用这个主题,大家可以自行上网下载。

Objective-C 基础教程第七章,深入理解Xcode_第38张图片

Text Editing (文本编辑)

Line numbers可以设置是否显示行号。

Objective-C 基础教程第七章,深入理解Xcode_第39张图片

Objective-C 基础教程第七章,深入理解Xcode_第40张图片

Key Bindings (热键)

这里的快捷键不一一试了,大家可以将常用的一些功能都看看如何用快捷键打开的,这样熟练之后就可以快速的就行Xcode开发。

Objective-C 基础教程第七章,深入理解Xcode_第41张图片

Compoents

这个可以管理,当前下载或者需要用到的模拟器镜像。

Objective-C 基础教程第七章,深入理解Xcode_第42张图片

Locations

可以用来设置当前编译构建的Xcode版本

Objective-C 基础教程第七章,深入理解Xcode_第43张图片

File菜单

File菜单主要的功能是文件相关的功能,比如添加新文件,添加新的Packages,或者是关闭工程等等。

Objective-C 基础教程第七章,深入理解Xcode_第44张图片

Editor菜单

Editor菜单是和编辑相关的,可以复制和粘贴、排序、格式化代码。

Objective-C 基础教程第七章,深入理解Xcode_第45张图片

View菜单

View菜单是用来显示和隐藏某些窗口的

Objective-C 基础教程第七章,深入理解Xcode_第46张图片

Find菜单

用来全局或者局部寻找代码,并且也可以进行替换。

Objective-C 基础教程第七章,深入理解Xcode_第47张图片

Navigate 菜单

Navigate是个导航菜单,这里的大部分功能其实用快捷键或者是工具栏图标都能实现的功能, 当然你如果忘记了就可以打开这个Navigate导航菜单看看。

Objective-C 基础教程第七章,深入理解Xcode_第48张图片

Editor菜单

这个菜单是用来设置Editor文本相关的内容的,比如有语法高亮,还有你可以设置自己喜欢的字体大小,还有主题也是可以在这里进行设置的,还有小地图。

Objective-C 基础教程第七章,深入理解Xcode_第49张图片

Product菜单

Xcode里面比较重要的应该就是这个菜单了,掌握了这里面的快捷键,那么编译和生成就不用再麻烦的去点按钮了。

首先我们从最上面的开始分析,Run这个没有什么好说的就是直接让程序运行快捷键是Command+RAnalyze静态分析用的快捷键是Shift+Command+B,这里需要注意的是这个Archive,这是用来分发生成APP的,如果是iOS的话他可以导出ipa,或者上传到AppStore进行提交审核。(iOS的话前提你需要有真机)

Objective-C 基础教程第七章,深入理解Xcode_第50张图片

Debug菜单

Debug菜单主要是用途调试的时候进行的一些操作,比如暂停、步过、步入、跳出函数。

Objective-C 基础教程第七章,深入理解Xcode_第51张图片

F7单步步入

Objective-C 基础教程第七章,深入理解Xcode_第52张图片

F6单步步过

Objective-C 基础教程第七章,深入理解Xcode_第53张图片

显示汇编代码

Objective-C 基础教程第七章,深入理解Xcode_第54张图片

Objective-C 基础教程第七章,深入理解Xcode_第55张图片

ok后面的有些菜单就不介绍了,一个git和一个Windows的菜单,大家有兴趣自己去看看,对我来说帮助不是很大那两个菜单,因为平时不怎么用到。

0x04 项目属性

除了菜单和界面外,Xcode还有个特别重要也是比较复杂的就是项目属性,用来配置你这项目里面的各种属性,依赖库啊,签名证书啊,编译版本啊等等。

Objective-C 基础教程第七章,深入理解Xcode_第56张图片

这里需要注意,你可以点击这个小图标,然后就能展开当前项目的所有工程,因为有些项目可能需要多个工程,比如经常就会遇到有些项目里面有很多库的工程,然后编译时候报错,又不知道该在哪里设置,你展开这个就能看见了。

Objective-C 基础教程第七章,深入理解Xcode_第57张图片

General (常规设置)

Identify (身份信息)

Identify里面主要就是用来填写你程序的包名,版本号等信息,用Bundle Identifier来区分不同的app。

Objective-C 基础教程第七章,深入理解Xcode_第58张图片

Deployment Info (部署信息)

部署信息,主要是用来填写你这app运行在哪个iOS或者macOS版本上,比如你填写iOS13,那么在iOS12系统上就无法运行。

image-20220321222905897

App Icons (图标)

用于设置App的图标,点击红色按钮后跳到如下第二图的地方。

image-20220321223734773

在这里你需要导入不同尺寸的icon,用于在不同设备上显示。

Objective-C 基础教程第七章,深入理解Xcode_第59张图片

其中有个很方便的方案可以快速解决不同尺寸的icon,用到软件是Prepo,然后再去阿里icon网站里面找你喜欢的图标,比如我喜欢牛油果图标。

Objective-C 基础教程第七章,深入理解Xcode_第60张图片

找到牛油果图标

Objective-C 基础教程第七章,深入理解Xcode_第61张图片

下载好拖入APP中,然后点击Export一键导出所有图标。

Objective-C 基础教程第七章,深入理解Xcode_第62张图片

接着将icon拖入到对应中的框中。

Objective-C 基础教程第七章,深入理解Xcode_第63张图片

打包成功后,发现图标确实是换了。

Objective-C 基础教程第七章,深入理解Xcode_第64张图片

image-20220321224833018

Frameworks,Libraries,and Embedded Content

这里主要是项目中用到的框架Frameworks、库Libraries,都是在这里进行添加的。

可以看到苹果自带的就有很多库了。

Objective-C 基础教程第七章,深入理解Xcode_第65张图片

Development Assets

这个是你开发中需要用到的一些资源文件,可以进行添加到这里面。

Objective-C 基础教程第七章,深入理解Xcode_第66张图片

image-20220322152011280

Signing & Capabilities (签名和权限)

该项主要是用于签名证书的一些设置,还有沙箱里面的权限设置,需要注意他可以单独对DebugRelease进行设置。

Objective-C 基础教程第七章,深入理解Xcode_第67张图片

Resource Tags

APP中需要用到的资源Assets添加到这。

Info (App清单)

包名清单设置在这边设置。

Objective-C 基础教程第七章,深入理解Xcode_第68张图片

Build Settings (Xcode环境变量)

这一项非常重要,类似Xcode的环境变量,可以根据此环境变量的设置使编译进行更加灵活。

因为我也是刚学,对Build Settings也没有大量使用的经验,所以等后期学到用到了再进行更新。

Build settings是对编译工作的细节进行设定,在这个窗口里可以看见大量的设置选项,从编译到打包再到代码签名都有,这里要注意 settings 的 section 分类,同时一般通过右侧的 inspector 就可以很好的理解选项的意义了。

Objective-C 基础教程第七章,深入理解Xcode_第69张图片

暂时可以参考:

https://blog.csdn.net/fanyun_01/article/details/118279039

https://blog.csdn.net/fishmai/article/details/50388831

http://www.noobyard.com/article/p-xkhusrok-bq.html

Build Phases

Build phases主要是用来控制从源文件到可执行文件的整个过程的,所以应该说是面向源文件的,包括编译哪些文件,以及在编译过程中执行一些自定义的脚本什么的

Objective-C 基础教程第七章,深入理解Xcode_第70张图片

Build Rules

Build rules 主要是用来控制如何编译某种类型的源文件的,假如说相对某种类型的原文件进行特定的编译,那么就应该在这里进行编辑了。同时这里也会大量的运用一些 xcode 中的环境变量,完整的官方文档在这里:Build Settings Reference

Objective-C 基础教程第七章,深入理解Xcode_第71张图片

菜鸡PWN小分队

最后大家如果对逆向、PWN、CTF 比较感兴趣的可以加群一起讨论。
Objective-C 基础教程第七章,深入理解Xcode_第72张图片

你可能感兴趣的:(Objective-C 基础教程第七章,深入理解Xcode)