美文网首页
Xamarin.iOS出现Code signing failed

Xamarin.iOS出现Code signing failed

作者: 临岁之寒 | 来源:发表于2018-03-13 19:09 被阅读595次

    我最近遇到了一个奇怪的问题,项目可以编译,可以运行,但是就是在生成Archvie之后要对其进行sign and distribute时会报如下错误:


    并且除此之外,没有其它信息;
    我试过所有办法,比如重新生成证书、重建项目、重启IDE和电脑、甚至是移除项目中可疑的子项目的代码等等,但是都不管用。最后意外发现原来是由于bundle identifier包含大写字母导致的。。。
    希望这个经验对你有用。

    2018-04-04 后来的实践表面以上结论有误,我的项目又出问题了,至今没有找到症结;

    2018-04-09

    终于找到问题的原因了!!!!
    首先这个问题的出现可能是由于我这个项目的特殊性导致的。我这个项目是一个基于Xamarin开发的输入法项目,项目是一个Xamarin.Form项目,结构大体如此:


    其中IOSLib和SuiHanLib是我个人编写的两个类库,ThreeDiretion是Xamarin.Form项目,ThreeDiretion.iOS是Xamarin.iOS项目,ThreeDiretionKeyBoard是iOS Keyboard Extension扩展。

    最开始,我只在ThreeDiretionKeyBoard中引用了IOSLib和SuiHanLib中的类型,项目的编写和运行一切顺利,但是在打包准备发布时,进行到sign and distrubte环节就总是出现上述图片中出现的问题,查看log给出的是一下信息:

    Begining distribution, 2018/4/8 12:17:28
    Channel: App Store
    App Bundle Id: com.suihan.td, Version: 1.0.4
    codesign -v -f -s "75BCAB46B9A6F6DDAE4CC293A6086F5C610749AB" "/var/folders/qc/5pggkbx565z7__bvx4fz6gsh0000gn/T/mdTmpDir1132857770/Payload/ThreeDiretion.iOS.app/PlugIns/ThreeDiretionKeyBoard.appex/Frameworks/Xamarin.Sdk.framework"
    /var/folders/qc/5pggkbx565z7__bvx4fz6gsh0000gn/T/mdTmpDir1132857770/Payload/ThreeDiretion.iOS.app/PlugIns/ThreeDiretionKeyBoard.appex/Frameworks/Xamarin.Sdk.framework: bundle format unrecognized, invalid, or unsuitable
    codesign exited with code 1
    ERROR:Code signing failed.
    Finshed
    

    根据这个信息,我在网上搜索了很久,大部分都说问题与自行创建Resources文件夹有关,但是我实践并没有解决问题,为这个问题我折腾了很长时间,因为我的另一个项目:岁寒输入法项目并没有出现这个问题;

    后来,想到有可能是iOS项目和Extension项目中包含的Xamarin.Sdk.framework不一致导致的,移除Extension中对IOSLib和SuiHanLib中类的引用后,签名通过!证明问题来自与对IOSLib和SuiHanLib的使用。

    于是,我在iOS项目中也添加了对IOSLib和SuiHanLib的引用,但这还不行,还需要在项目中添加一个类继承IOSLib和SuiHanLib中的一个类(可能这样才能使得引用库真正的被打包进来吧),签名通过。

    最后,这个问题并不是稳定出现的,换言之,此前我没有在iOS项目中引用那两个库的时候,签名也曾成功过,但是后来又莫名其妙地就不行了,我认为问题并不是我的配置有问题,而是Xamarin平台存在bug。

    相关文章

      网友评论

          本文标题:Xamarin.iOS出现Code signing failed

          本文链接:https://www.haomeiwen.com/subject/jhhtqftx.html