我正在努力创建一个我希望出售的 iOS 静态库。我已经完成了初始构建的步骤并生成了 .a/.h 输出。
当我将这些文件包含在一个单独的项目中时,我看不到任何方式来浏览 .a 文件中的内容。
但是,当我的库中的一行代码使应用程序崩溃时(正如我所说,它仍在开发中),调试器会向我显示整个类 (.m) 文件。这是怎么回事?
我不太了解静态库中的所有内容,而且我不确定我是否为模拟器和设备编译了该版本。这可能与它有关吗?如果是这样,有人可以解释为什么吗?
谢谢!!!
最佳答案
别担心,您的源代码不包含在存档 (.a) 文件中。
Xcode 足够智能,可以根据文件中嵌入的调试信息在您的计算机上找到源代码文件。如果您使用“发布”配置构建库(或以其他方式修改build设置以便删除调试符号)并且机器上的任何地方都没有源代码,开发人员将不得不求助于他们对 x86 或 ARM 的了解程序集来弄清楚你的代码是如何工作的。
顺便说一句:
由于很多 Objective-C 是在运行时处理的,所以很多类名和选择器名将在您的库中可见。这就是它的工作原理。您可以尝试混淆它,但我认为您的时间最好花在编写更有用的代码上进行销售。
如果您想为人们提供一个用于 iOS 开发的静态库,您需要为 iOS 模拟器 (x86) 和 iOS 设备 (arm) 构建版本,然后使用
lipo
将它们组合成一个单一的胖静态库。搜索“lipo xcode fat static library”以了解执行此操作的不同方法。有些解决方案比其他解决方案更复杂。
关于objective-c - 在静态库中隐藏代码(iOS Obj-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673223/