我开发了一个工具,试图在App上转储越狱设备的头类。 我正在使用Clutch,但有时Clutch无法使用一些较新的应用程序,我想要集成除Clutch之外的其他工具。 因此,我首先需要确定二进制文件是否是用Swift编写的,这样我就可以切换到正确的工具来执行。
我的问题是, 有没有办法,比如判断iOS App二进制文件是否是用Swift编写的命令工具? 当Swift与Obj-C相比时,二进制文件的构建方式确实存在很大差异吗?
答案 0 :(得分:7)
.app文件中有一个_CodeSignature文件夹。里面有一个CodeResources文件。如果您将其作为文本打开,则会看到它包含Frameworks/libswiftCore.dylib
我相信这表明它是用swift构建的。
答案 1 :(得分:7)
您可以使用nm tool打印应用符号表。如果您搜索swift
,例如使用grep
:
nm YourApp | grep swift
它会打印出这样的东西(以及更多):
U __swift_FORCE_LOAD_$_swiftFoundation
对于100%Objective-C应用,结果将为空。但是,您无法判断代码是否为100%Swift,因为对于混合的objc + swift应用程序,结果类似于swift应用程序。