【iOS】使用 otool 命令查看 App 所使用的动态库

工程中使用到的第三方 “.a 静态库” 或者 “静态 framework”,在编译链接时,就会被合并到主 Mach-O 二进制文件中,而对于“动态 framework”,则会被拷贝到 .ipa 包中的 .app 文件里的 “Frameworks” 文件夹下,在 App 启动时才会被动态链接。

如何查看一个 App 都使用了哪些动态库,包括系统自带的动态库和第三方动态库。

创建一个新工程 “TestApp”,点击编译后,在 Products 文件夹中找到 “TestApp.app” 文件,该文件中包含了当前 App 的 Mach-O 二进制文件 “TestApp”,此时我们在命令行中执行:

若没有 Products 文件夹可以这样操作:
project.pbxproj 文件打开

otool -L /Users/inke/Library/Developer/Xcode/DerivedData/TestApp-bkpkwufsgyelpefayltswbirvgwk/Build/Products/Debug-iphonesimulator/TestApp.app/TestApp

即可查看当前 App 需要链接的所有 framework,如图 1 所示:

可以看出,一个简单的 iOS 工程,至少会链接 UIKit.framework、Foundation.framework、libobjc.A.dylib(Objective-C Runtime 库)、libSystem.B.dylib(系统基础库)等动态库;如果我们的工程依赖了系统库,也会在这里看到。

另外,如果我们工程依赖了一些自己开发的 “动态 framework”,或者通过 Carthage、CocoaPods 等添加的第三方 “动态 framework”,通过 otool 命令也能看到,如图 2 红框内所示,

PS:上述命令也可以用于查看从 App Store 下载的 .ipa 包里 Mach-O 二进制文件所依赖的动态库。

【iOS】使用 otool 命令查看 App 所使用的动态库相关推荐

  1. Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法

    Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 Win ...

  2. 查看内核模块依赖关系和动态库依赖关系

    背景 最近在项目中加载内核模块和动态库时,都遇到加载失败情况.后发现都是依赖关系问题,在此记录此类问题的解决方法. 一.查看内核模块依赖关系 使用insmod加载内核模块时,报以下错误: / # in ...

  3. 查看linux下程序或者动态库到底依赖哪些so动态库以及对应的版本

    一. ldd命令 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/ls linux-vdso.so.1 => (0x00 ...

  4. adb命令查看app的日志

    前言 在做app测试的时候,经常会遇到异常,此时如果开发没有异常保存,那么测试就得通过adb命令来查看日志信息.基于Windows平台的操作: logcat输出日志 一.把日志输出到手机指定目录 其命 ...

  5. Android使用adb命令查看APP数据流量使用情况

    1. 在Android系统中,"/proc/net/xt_qtaguid/stats"这个文件里储存着各个应用的流量信息,统计流量的时候可以用到这个文件.    首先获取待测应用的 ...

  6. adb查看app的日志

    adb命令查看app的日志,网络的先连接,usb的插上就能用了. adb logcat *:E ->d:\\log.txt 在做app测试的时候,经常会遇到异常,此时如果开发没有异常保存,那么测 ...

  7. 查看APP数据流量使用情况

    Android使用adb命令查看APP数据流量使用情况 1933 0 2% S 17 708212K 29772K bg system com.sziov.appstorewidget 2912 0 ...

  8. ios动态库注入把越狱手机上自制的动态库安装到普通手机上

    文章目录 预备条件 导出越狱手机上的app包和自己注入的动态库 导出自己写的tweak动态库文件 查看依赖库 执行命令查看程序依赖的动态库名字 用machoview查看 安装insert_dylib ...

  9. iOS动态库实现插件化

    1.动态库制作 p1.png 选择Framework,创建动态库. Framework分动态.静态两种,可以通过下面路径查看 TARGETS->Build Settings(搜索mach-o)- ...

  10. iOS SDK开发系列一之Cocoapods原理,Xcode的配置,动态库和静态库介绍

    前言 三个月没写东西了,是时候总结点东西了.SDK这个东西开发其实和项目开发类似,但是项目中你不需要关注一些配置和打包的参数,或者你压根不需要关注Framework和.a到底是怎么链接配置的,因为Co ...

最新文章

  1. spring18-1:采用jdk的动态代理 proxy。
  2. android 关闭多点触控_Cocos Creator关闭多点触摸的问题
  3. 这次让我们从字节码文件来重新认识String,文末有两个小小面试题,一起来试一试
  4. Python中Numpy(2,numpy的基本操作(级联,维度转换,切分,副本))
  5. maven 父maven_Maven的春天
  6. 【CodeForces - 510D】Fox And Jumping(dp,stlmap,数论的性质)
  7. C++主要操作符重载的定义和总结
  8. Python办公自动化|光速对比并提取两份Word/Excel中的不同元素
  9. php由哪几部分组成,微型计算机通常是由哪几部分组成?
  10. php导入csv 进度条,php 导入导出怎么做成有进度条??
  11. laydate 在vue中使用_Vue中使用ArcGIS JS API 4.14开发
  12. cx_Oracle安装教程
  13. 软考高级网络规划设计师历年论文真题汇总2009-2021
  14. jq css3实现跑马灯+大转盘
  15. 移动机器人路径规划minimum_snap(MATLAB)笔记整理
  16. 定价过程的16个字段
  17. 常见的几个接口管理平台简介
  18. 云服务器什么配置才够用?
  19. 女生玩游戏什么款式蓝牙耳机好用?小清新高颜值游戏蓝牙耳机推荐
  20. 本以为java语言很难学,其实就学完下面这些知识,就能理解了

热门文章

  1. Electron实现桌面日历
  2. java gui即时聊天工具
  3. mui登录模板源码解
  4. 异速联某客户端无法登陆
  5. 计算机注册dll,电脑中注册dll文件和ocx文件的方法与操作步骤
  6. Zoople HTML 编辑器组件 for NET
  7. 更改文件扩展名HTML,文件的后缀名怎么改|更改文件后缀名的方法
  8. Excel自学详细视频教程百度网盘分享
  9. C语言习题5.21--学生成绩的处理
  10. 解决VST插件无法加载之sam音架的配置