iOS 个应用的 otool 输出
otool output for iOS apps
如果我 运行 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
这告诉我我的应用 used/referenced/required 的动态库。
我的问题:这些是指 存在于 ios 设备本身 上的全局目录吗?我相信答案是肯定的,但这并不意味着所有 iOS 设备都已经安装了 libsqlite
(我只是觉得这令人惊讶,因为作为网络开发人员,我认为 sqlite 更像是一个用户空间的东西,我很惊讶它能得到 Apple 的足够支持,成为一个预安装的 dylib)?
为什么有些动态库来自 /System/Library/Frameworks
而有些来自 /usr/lib/...
?我可以找到 list of iOS frameworks,但我在哪里可以找到 iOS 设备中内置的受支持 dylib
的列表?
其中大部分确实是指 iOS 设备上的库,因为当应用程序在设备上启动时它们必须可用。 @rpath
条目指的是应用程序捆绑的内容,但 /
开头的任何内容都包含在 iOS 中。所有 iOS 设备都安装了 SQLite,因为它被各种 Apple 框架(Core Data,以及其他内部框架)使用。对于它的价值,出于同样的原因,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.
得到的 here's a gist
如果我 运行 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
这告诉我我的应用 used/referenced/required 的动态库。
我的问题:这些是指 存在于 ios 设备本身 上的全局目录吗?我相信答案是肯定的,但这并不意味着所有 iOS 设备都已经安装了 libsqlite
(我只是觉得这令人惊讶,因为作为网络开发人员,我认为 sqlite 更像是一个用户空间的东西,我很惊讶它能得到 Apple 的足够支持,成为一个预安装的 dylib)?
为什么有些动态库来自 /System/Library/Frameworks
而有些来自 /usr/lib/...
?我可以找到 list of iOS frameworks,但我在哪里可以找到 iOS 设备中内置的受支持 dylib
的列表?
其中大部分确实是指 iOS 设备上的库,因为当应用程序在设备上启动时它们必须可用。 @rpath
条目指的是应用程序捆绑的内容,但 /
开头的任何内容都包含在 iOS 中。所有 iOS 设备都安装了 SQLite,因为它被各种 Apple 框架(Core Data,以及其他内部框架)使用。对于它的价值,出于同样的原因,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.