我正在开发一系列iOS应用程序,这些应用程序将共享一个公共代码库。我已经将公共代码库开发为静态库,并希望它的调试符号包含在主应用程序的.dSYM文件中。我的理解是这是可能的,但我还没有完成它。
自己项目中的公共代码库,它以静态库作为目标。该项目被拖入主应用程序的项目中。在主要应用程序的目标构建阶段中,我已将静态库添加为目标依赖项,并在“链接二进制文件库”下添加。该项目按照需要构建和运行。
现在,如果我从主项目生成存档,我可以在Finder中查看该存档,它包含一个可用于表示崩溃日志的.dSYM文件。但是,.dSYM仅包含主应用程序的符号,而不包含静态库的符号。为了过度证实这一点,我运行了以下内容:
dwarfdump /path/to/app.dSYM
输出(大多数)不包含静态库中的任何符号。我发现的唯一例外是我的主项目的AppDelegate是静态库中对象的子类,并且.dSYM中有超类的条目。但是,没有其他类存在。
在静态库的项目目标的Build Settings中,我设置了以下内容:
如果有人能提供一些指导,我将不胜感激。
答案 0 :(得分:4)
静态lib符号 do 显示在应用程序的dSYM文件中,dwarfdump将显示该文件。
dwarfdump -a path/to/app.dSYM >dsymAsText.txt
那应该显示lib的符号。
但是如果你(就像我最近一样)寻找一个符号表来生成与你的静态库一起使用,我得出的结论是它将是相当无用的;一旦它被编译成一个新的应用程序,这些符号和地址都将改变,你将有一个完全不同的偏移一切(如果我错了,请有人纠正我。)
我不完全确定有办法解决这个问题。
答案 1 :(得分:1)
不确定您是否找到了答案,但几天前我遇到了完全相同的问题。我通过以下方式让它发挥作用: