根据领导要求,我实验了一下 Carthage 来管理我们的第三方代码。但是真机调试的时候出现了这个问题:The application does not have a valid signature.
我在网上搜了一下。找到的几种解决办法:
- clean,然后重新运行
- 删除手机上的程序,重新运行
- 修改证书配置:每次运行前修改一下证书的配置,再攺回来,可以有效一次,相对比较方便。
以上方法我都试了,完全不 WORK 啊。
后来调试过程中我想到了,我们当前工程使用的是最新版本的 Swift,而使用的第三方框架有些是我们自己写的,而且是 OC 版本。顺着这个思路,我查到了,如果自己的 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 的编译设置,平时只编译当前机器的指令,发布时编译所有平台的指令,这样平时调试的时候编译速度会快一点。这种设置在模拟器可以编译运行,但是真机不能通过。
最终修改方法:
找到我们自己写的 Project,将 Build Active Architecture Only
不论是 Debug 还是 Release 都设置为 NO。carthage update,然后重新 build,运行成功。