解决Code Sign error: Provisioning profile does not match bundle identifier

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Code Sign error: Provisioning profile does not match bundle identifier相关的知识,希望对你有一定的参考价值。

参考技术A 问题:
ios app调试时可能会出现这个错误:
This application's bundle identifier does not match its code signing identifier.

解决办法:
sdk要支持多种架构cpu,如armv7,arm64,模拟器。
由于sdk中armv7,arm64和模拟器版本不是同一个项目文件,模拟器没有实现sdk的功能,
只做了一个内部实现为空的接口,方便app可以在模拟器编译,运行,但是不需要支持模拟器运行sdk的内部功能。
在编译完成后通过lipo合并各个架构sdk,生成集成所有cpu架构的sdk。

问题的原因是:模拟器和arm架构两个项目文件中的identifier设置的不一样,比如identifier大小写不同
把identifier修改成一样的再重新编译,再重新用lipo命令合并即可。

Code Sign Error in macOS Sierra Xcode 8.3.3 - resource fork, Finder information, or similar detritus

这是iOS 10, macOS Sierra, watchOS 3, 和 tvOS 10带来的安全策略更新。代码签名不再允许应用程序包中的任何文件具有包含资源分叉或查找信息的扩展属性。

通过如下命令行,可以查看那些文件导致了这些问题:

$ xattr -lr <path_to_app_bundle>

解决这一问题的方案大致有三个:

  1. 删除App的资源文件中所有扩展属性

xattr -cr <path_to_app_bundle>

  2. 查找带有finder信息的文件,定向删除

ls [email protected] . > kundapura.txt

  找出com.apple.FinderInfo文件,定向删除扩展属性

xattr -c <filename>

  3. 定向文件类型,删除扩展属性

  find . -type f -name *.jpeg -exec xattr -c {} \;
  find . -type f -name *.jpg -exec xattr -c {} \;
  find . -type f -name *.png -exec xattr -c {} \;
  find . -type f -name *.json -exec xattr -c {} \;

 

以上是关于解决Code Sign error: Provisioning profile does not match bundle identifier的主要内容,如果未能解决你的问题,请参考以下文章

解决Code Sign error: Provisioning profile does not match bundle identifier

Xocde一次版本升级遇到的问题 (Code Sign Error)

Code Sign Error in macOS Sierra Xcode 8.3.3 - resource fork, Finder information, or similar detritus

CODE_SIGN_IDENTITY[sdk=iphoneos*] 是啥意思

代码签名错误 - 验证 CODE_SIGN_ENTITLEMENTS 的值

Jenkins 上的代码签名资源规则路径失败,CODE_SIGN_RESOURCE_RULES_PATH