Swift 和 OC 混编:The application does not have a valid signature

出现错误:

The application does not have a valid signature

这是由于使用了第三方 framework 或者自己的代码是以 framework 的形式引用的。而且直接在 Swift 文件中 import 了 OC 代码的framework。

解决办法:

  • 把 OC 的 framewrok 的引用放到桥接头文件中
    #import <HelloWorld/HelloWorld.h>
    
  • 删除 Swift 文件中对 OC framework 的引用
  • 简单说就是 Swift 不论是引用 OC 代码还是 OC 的 Framework,都必须通过桥接头文件

另外值得一提的是,如果自己的 OC 代码是以 Framework 的形式引入进来,并且这个 Framework 的Build Active Architecture Only 不论是 Debug 还是 Release 都选择的是 NO,也就是编译armv7,armv7s,arm64 所有平台的指令,在 Swift 中直接引用OC Framework 而不通过桥接头文件是可以通过编译的。

如果该 OC Framework 的Build Active Architecture Only 在 Debug模式设置为 YES,Release 设置为 NO。这也是我们通常针对 Framework 的编译设置,平时只编译当前机器的指令,发布时编译所有平台的指令,这样平时调试的时候编译速度会快一点。这种设置在模拟器可以编译运行,但是真机不能通过。

以上两个表现,这也是我找了半天错误的原因。

    原文作者:midmirror
    原文地址: https://www.jianshu.com/p/da54342f2a75
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞