关于xcode工具升级之后出现的编译打包问题

一、问题背景

本机的xcode工具版本为10.2, 一直没有升级,前段时间上架新的应用到AppStore 时,发现编译打包成功后,上传不成功,提示需要高版本的xcode工具:
在这里插入图片描述
于是升级了MAC系统以及xcode工具, 升级完之后,开发应用使用的新版本工具进行,调试阶段可以正常打包安装应用到手机。随后将代码更新到自动化打包环境,使用脚本用命令行工具xcodebuild 进行打包,结果莫名其妙地报错了:

error: Build input file cannot be found: ‘/Users/hongboni/PackOnline/IOSPack/1602474673689/BaseWebviewApp/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m’
note: Using new build systemnote: Planning buildnote: Constructing build description
** ARCHIVE FAILED **

刚开始的这种报错,是由于去除了部分代码,没有将xcodeproj 文件同步过来,导致有的编译文件找不到,更新同步文件之后,继续报编译阶段的错误:

GTSDK not found for architecture arm64

这个问题就看得有点摸不着头脑了, 确实看着是由于集成了个推新功能造成的样子,但是在xcode工具中能够编译成功没问题,为了排除自动打包环境代码差异问题,我在开发代码中使用了命令行工具来编译,结果同样报错,于是将思路准换到命令行工具和 xcode ide 工具的差异造成的。

二、问题分析

1、使用which 命令查看xcodebuild 工具位置:

hongbodeMac-mini:bin hongboni$ which xcodebuild
/usr/bin/xcodebuild
hongbodeMac-mini:bin hongboni$ 

进入目录无法确认这个是否是升级之后的xcode对应的命令行工具,但是查看时间觉着不是,于是直接想从应用IDE中找到关联命令行,刚开始从显示包内容中去一步步查找,在developer下有usr/bin 里面有工具链,但是界面上看不到具体路径,后来才回到系统根目录下,发现有个Applications :

hongbodeMac-mini:bin hongboni$ ls | grep xcodebuild
xcodebuild
hongbodeMac-mini:bin hongboni$ pwd
/Applications/Xcode.app/Contents/Developer/usr/bin

于是将脚本中的命令替换成这个目录下的进行编译,上面出现的代码层面的报错问题终于不见了,虽然自己也不知道什么原因,但是用了升级之后的xcode开发的代码,在用命令行编译时配套进行升级,肯定是没错的。

编译归档问题解决,但是接着导出又出现了问题:

2020-10-12 14:21:14.678 xcodebuild[53117:3988966] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path ‘/var/folders/f6/cf9jzw8s6lb440mfc4k6dpwc0000gn/T/BaseWebviewApp_2020-10-12_14-21-14.677.xcdistributionlogs’.
error: exportArchive: No signing certificate “Mac App Distribution” found
Error Domain=IDECodesignResolverErrorDomain Code=1 “No signing certificate “Mac App Distribution” found” UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedRecoverySuggestion=No “Mac App Distribution” signing certificate matching team ID “XXXXX” with a private key was found., IDEProvisioningError_UserInfoKey_IDEProvisioningErrorSpecifier=Mac App Distribution, NSLocalizedDescription=No signing certificate “Mac App Distribution” found, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorPlatform=com.apple.platform.macosx, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorAction=5, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorTeam=<IDEProvisioningBasicTeam: 0x7f82e54cef20; teamID=‘XXXXX’, teamName=’(null)’>}
** EXPORT FAILED **

刚开始以为是证书的问题,但是检查了一番,发现并无问题,将临过期的证书又重新申请了一个certificate 然后加入到钥匙串中,依然如此。使用xcode工具能够正常导出,于是想起了是否是导出文件ExportOption 上面是否因为升级之后有变化造成的,就用xcode工具手动导出了一个ad-hoc内测版本和之前用的对比了一下,最后发现有一处差异:

老的:

	<key>signingCertificate</key>
	<string>iPhone Distribution</string>

新的

	<key>signingCertificate</key>
	<string>72EC5B7C13E13AB50BF680CD31C22C40D0086951</string>

将此处更新同步之后,能够正常导出内测版本,我也不知道这串码是什么用途,但是似乎是固定的。

最后以为可以打完收工了,在自动化打包环境中一跑,发现还是失败,手动调试脚本发现生成的ipa文件不知何时被改名了,于是将改掉的名字在工程中一搜索,发现是 build setting --> packaging 中有一个product name 的配置选项,这个名词变了会导致生成的ipa文件名称改变,最终导致脚本拷贝时找不到名称,改完此处终于算是暂时完结了(我都不敢说完结,本以为是个很简单的功能,又调试了一天)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值