检测 iOS App 是否写在 Swift
Detect if iOS App is written in Swift
我正在开发一个工具,试图为应用程序上的越狱设备转储 header 类。
我正在使用 Clutch,但有时 Clutch 无法使用某些较新的应用程序,我正在考虑集成 Clutch 以外的一些工具。
所以,我需要先判断二进制文件是否写在Swift,这样我才能切换到正确的工具执行。
我的问题是,
有没有办法,比如命令工具来确定 iOS 应用程序二进制文件是否用 Swift 编写?
与 Obj-C 相比,二进制文件在 Swift 中的构建方式真的有很大不同吗?
.app 文件中有一个 _CodeSignature 文件夹。里面有一个 CodeResources 文件。如果您将其作为文本打开,您将看到它包含 Frameworks/libswiftCore.dylib
我相信这表明它是用 swift 构建的。
您可以使用nm tool打印应用程序符号table。如果您搜索 swift
,例如使用 grep
:
nm YourApp | grep swift
它将打印类似这样的内容(以及更多):
U __swift_FORCE_LOAD_$_swiftFoundation
对于 100% Objective-C 应用,结果将为空。但是,您无法判断代码是否为 100% Swift,因为对于混合 objc + swift 应用程序,结果将类似于 swift 应用程序。
我正在开发一个工具,试图为应用程序上的越狱设备转储 header 类。 我正在使用 Clutch,但有时 Clutch 无法使用某些较新的应用程序,我正在考虑集成 Clutch 以外的一些工具。 所以,我需要先判断二进制文件是否写在Swift,这样我才能切换到正确的工具执行。
我的问题是, 有没有办法,比如命令工具来确定 iOS 应用程序二进制文件是否用 Swift 编写? 与 Obj-C 相比,二进制文件在 Swift 中的构建方式真的有很大不同吗?
.app 文件中有一个 _CodeSignature 文件夹。里面有一个 CodeResources 文件。如果您将其作为文本打开,您将看到它包含 Frameworks/libswiftCore.dylib
我相信这表明它是用 swift 构建的。
您可以使用nm tool打印应用程序符号table。如果您搜索 swift
,例如使用 grep
:
nm YourApp | grep swift
它将打印类似这样的内容(以及更多):
U __swift_FORCE_LOAD_$_swiftFoundation
对于 100% Objective-C 应用,结果将为空。但是,您无法判断代码是否为 100% Swift,因为对于混合 objc + swift 应用程序,结果将类似于 swift 应用程序。