首页 文章

iOS应用程序的otool输出

提问于
浏览
0

如果我在iOS .ipa文件的主可执行文件上运行 otool -L ... ,我会看到以下输出:

/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation /System/Library/Frameworks/UIKit.framework/UIKit ... @rpath/DMSDK.framework/DMSDK ... /usr/lib/libz.1.dylib /usr/lib/libc++.1.dylib /usr/lib/libiconv.2.dylib /usr/lib/libsqlite3.dylib

这告诉我应用程序使用/引用/需要的动态库 .

我的问题:这些是指ios设备本身存在的全局目录吗?我相信答案's yes, but wouldn' t暗示所有iOS设备已经安装了 libsqlite (我很惊讶它有足够的支持来自Apple预先安装的dylib)?

为什么有些dylib来自 /System/Library/Frameworks ,有些来自 /usr/lib/... ?我可以找到list of iOS frameworks,但在哪里可以找到iOS设备内置的支持 dylib 的列表?

1 回答

  • 2

    其中大多数确实引用了iOS设备上的库,因为它们必须在应用程序在设备上启动时可用 . @rpath 条目是指与应用程序捆绑在一起的内容,但以 / 开头的任何内容都包含在iOS中 . 所有iOS设备都安装了SQLite,因为它也是值得SQLite的's used by various Apple frameworks (Core Data, and also internally by others). For what it'也是macOS的标准部分,原因相同 .

    在大多数情况下, /System 路径指的是Apple提供的框架,其中包括动态库以及框架使用的资源(图像,声音) . [当开发人员工具在Mac上时,框架也包含头文件 . ] /usr/lib/ 路径是其他任何东西,包括第三方开源库,如SQLite以及任何具有更多Unix风格的动态库 .

    在iOS设备本身之外,我知道找到包含库列表的唯一方法是在Mac上安装Xcode并浏览 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib (Apple Watch和Apple TV有类似的路径) . 对于它的 Value ,here's a gist我用Xcode 8.3.2得到的东西 .

相关问题