一个比较麻烦的 iOS 编译问题,XCode 工程结构是这样的: 一个主项目 MainProject,下面包含了两个子项目,一个是 lib-UnityIphone (就是 unity3d 游戏引擎打包出来的库,不开源,无内部代码),另一个 lib-CoMagicFont (字体相关的库,有全部代码),这两个库里面都引用了开源 freetype 字体库。也就是说,当前工程下,打包进去了两个 freetype.a。
问题来了,App 运行时,lib-UnityIphone 一初始化就 Crash,debug 后发现,这个库在访问 freetype 代码时,似乎“跳跃”到了 lib-CoMagicFont 的那个版本去了。因为 lib-UnityIphone 不开源,我尝试在 lib-CoMagicFont 中移除 freetype 试了下,果然能顺利运行了。
那么,该怎么解决呢?现在只想到一个方法,将 lib-MagicFont 中的 freetype 全部替换成源代码形式再编译,不过工作量感觉会大不少。 不明白的一点是,lib-UnityIphone 运行时,为什么会定位到 lib-CoMagicFont .a 里面的 freetype.a, 在工程结构上还有其他解决方法吗?