iOS开发中常用命令工具(xcode-select、lipo、xcrun等)

iOS开发中常用命令工具(xcode-select、lipo、xcrun等),第1张

当安装多个xcode的版本,使用该工具使用指定的版本。

-p 或者 --print-path 查看当前开发者目录,也即是xcode的版本目录。print the path of the active developer directory

-s <path> 或 --switch <path> 选择xcode的版本

--install 安装

--version 查看版本

--reset 恢复默认

sudo rm -rf /Library/Developer/CommandLineTools 强制删除安装目录下的文件

是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。

Mac OS X下二进制可执行文件的动态链接库是dylib文件。所谓dylib,就是bsd风格的动态库。基本可以认为等价于windows的dll和linux的so。mac基于bsd,所以也使用的是dylib。

Linux下用 ldd 查看,苹果系统用 otool 。

otool命令介绍

MobSF

Mach-O 文件格式解析

xcodebuild :通过工程文件,生成app文件。

xcrun :通过app文件,来生成ipa文件(包含了签名的过程)。

通过app文件生成ipa文件

libtool是一个通用库支持脚本(/usr/bin/libtool),将使用动态库的复杂性隐藏在统一、可移植的接口中。

可以在不同平台上创建并调用动态库,我们可以认为libtool是gcc的一个抽象,也就是说,它包装了gcc或者其他的任何编译器,用户无需知道细节, 只要告诉libtool说我需要要编译哪些库即可,并且,它只与libtool文件打交道,例如lo、la为后缀的文件。

libtool工具的使用

库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。

详细命令参见, 菜鸟网络-ar命令

可以用来创建、修改库,也可以从库中提出单个模块。

lipo libAFNetworking.a -thin arm64 -output lib-arm64.a 生成Arm64包

ar -t lib-arm64.a 输出包含的.o文件 和 otool -L libAFNetworking.a 一样。

ar -x lib-arm64.a 解压出包里面的.o文件

在iOS开发中,常常用来分析二进制和静态库文件。

列出 .o .a .so 中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。

iOS开发中,可以用来查看.a静态库所有打包进去的.o文件和函数接口信息,帮助我们定位崩溃信息。

例如: nm -u libAFNetworking.a 列出某个.o文件的接口信息。

二进制查看命令,将文件显示为16进制字符串表示形式。

例如: xxd libYTKNetwork.a | grep "net" 查看YTKNetwork.a文件里面包含net字符串的,帮助我们分析一些二进制文件。

DWARF文件初探——提取轻量符号表

Mac系统下lipo, ar, nm等工具的使用简介

美团 iOS 工程 zsource 命令背后的那些事儿

Linux工具参考篇

iOS 静态库冲突 两个不同的.o 文件冲突 ,静态库分离

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 脚本(shell script),是一种为 shell 编写的脚本程序。在iOS开发中,我们通常编写一些自动化的脚本文件,来提高我们的生产效率,其本质就是通过Shell脚本对一些 xcodebuild , xcode-select , xcpretty , xcrun 等指令的封装。本篇文章,我们就针对 Shell 脚本的语法,做一些罗列,以辅助我们去完成一些自动化封装。

执行脚本

.sh 文件为 Shell 脚本文件格式,通过 sh 指令执行脚本文件

执行结果:

1.通过 echo 输出变量时,需要使用 $ 或者 ${} 修饰

2. (重点)定义变量时,等号之间不能有空格,不然会误认为变量为一个指令

3.可以直接修改 name 变量的值,即当前 name 默认为 readwrite 权限

4.我们给 _var 用 readonly 修饰后,再修改值会抛出异常

执行结果:

执行结果:

执行结果:

执行结果:

$@ 和 $* 都是输出所有参数,前者是 "$1" "$2" "$3" "$4" ,后者是 "$1 $2 $3 $4"

执行结果:

注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ] 。

关于文件检测运算符,这里还是都罗列一下吧,比较重要:

执行结果:

执行结果:

执行结果:

执行结果:

2.有参数

执行结果:

注意: $10 不能获取第十个参数,获取第十个参数需要 ${10} .

使用 man 查询 指令文档

比如我们想查看 xcodebuild 指令下都有哪些 *** 作,直接在终端执行:

当我们不清楚某一个指令下的 *** 作时,就可以通过 man 查询,然后辅助我们来编写 Shell 指令。

在iOS下,了解下这些 Shell 语法就足够了,已经可以帮助我们完成大部分的 Shell脚本 的编写或者阅读别人的 Shell 源码。不需要记忆,简单看下就可以。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7130672.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存