开发环境: Xcode12,Objective-C,iOS14
打包环境: Xcode11,Objective-C, iOS13.2
构建过程中报错,主要信息如下:
An empty identity is not valid when signing a binary for the product type 'Application'
xcodebuild failed with code 65
经各种查(百度、google)
网上的解决办法基本如下几种:
- 开automatically manage signing, 关automatically manage signing,通过切换状态来更改Project的一些配置。
- 添加
CODE_SIGN_ALLOWED=NO
到build settings, 原理猜测,应该是构建过程中忽略CODE_SIGNING的检查。 - 重新配置一套证书和profile
- info.plist 丢失
结果嘛,1无效,2构建能过,但是打包ipa的时候报错了,3不可能,证书不归我们管,4info.plist一直在,且identifier没问题。
上面的办法,只是我这没有用,你们可以试试
最后发现在Xcode12里面,Build Setting 中 Code sign identity,下面提供了独立SDK的code sign 设置,
此时在project.pbxproj 中以文本方式打开,code sign identity 配置变成如下样式:
{
isa = XCBuildConfiguration;
baseConfigurationReference = 3047A50F1AB8059700498E2A /* build-debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
...
观察最后一句代码,"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
Xcode11 中,还不支持这种。。。。
问题的解决就是把,这行代码删掉(Release&Debug),Xcode中,buildSetting中无法删除该设置,并且,文本中删掉,回到项目中还是可以找到,这时就千万别动这个选项了。
这里就是An empty identity is not valid when signing a binary for the product type 'Application'错误的解决过程。
后面还出了个情况iOS development certificate not found XXX
类似这种报错,也是return code 65,这种一般是证书未配置导致的,集中构建过程中应构建release模式,服务器肯定没配develop的证书,
因此,修改scheme中,archive 的模式为Release
后面打包就成功了!🎆🎆🎆