适用于iOS应用的otool输出

亚历山大·华莱士·马特纳(Alexander Wallace Matchneer)

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

/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设备本身上存在的全局目录我相信答案是肯定的,但是这并不意味着所有iOS设备都已经libsqlite安装了(我只会感到惊讶,因为作为一名Web开发人员,我认为sqlite更像是一个用户空间的东西,对此我会感到惊讶苹果会提供足够的支持以使其成为预先安装的dylib)吗?

为什么某些dylibs都来源于/System/Library/Frameworks有的来自/usr/lib/...我可以找到iOS框架列表,但是在哪里可以找到dylibiOS设备内置的受支持的s的列表

汤姆·哈灵顿

其中大多数确实引用了iOS设备上的库,因为在应用程序在设备上启动时它们必须可用。@rpath条目指的是与该应用程序捆绑在一起的内容,但/iOS开头的任何内容都包含在内。所有iOS设备都安装了SQLite,因为各种Apple框架(Core Data,以及其他内部)都使用了SQLite。出于同样的原因,SQLite也是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的路径相似)。对于它的价值,这里是我使用Xcode 8.3.2的要点

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章