XZ_iOS命令行打包和Python脚本打包出现错误的解决

错误集锦

错误1:

Error Domain=IDEProfileLocatorErrorDomain Code=4
不存在与Team 'xxx' 相匹配的 iOS In House 的描述文件,描述文件 iOS In House 是Xcode自动创建的。

错误1的文字描述:

2018-06-15 09:25:06.405 xcodebuild[9232:153502] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7f81e7a58de0>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(
    "Error Domain=IDEProfileLocatorErrorDomain Code=4 \"No \"iOS In House\" profiles for team 'HxxxW' matching 'com.xxx.xxx' are installed.\" UserInfo={NSLocalizedDescription=No \"iOS In House\" profiles for team 'HxxxW' matching 'com.xxx.xxx' are installed., NSLocalizedRecoverySuggestion=Install a profile (by dragging and dropping it onto Xcode's dock item) or specify a different profile in your Export Options property list.}"
)}
error: exportArchive: No "iOS In House" profiles for team 'HxxxW' matching 'com.xxx.xxx' are installed.

** EXPORT FAILED **

错误2:

Error Domain=IDEProfileQualificationErrorDomain Code=12

描述文件是Xcode管理和创建的,需要一个开发者自己手动创建的描述文件

下图中蓝色圈中的部分是当前描述文件的信息:

错误2的文字描述:

Error Domain=IDEProfileQualificationErrorDomain Code=12 "Provisioning profile "iOS Team Inhouse Provisioning Profile: com.xxx.xxx" is Xcode managed, but signing settings require a manually managed profile." UserInfo={IDEProfileQualificationError_Profile=<IDEEmbeddedProvisioningProfile 0x7feade49bbb0: (此处省略描述文件信息), NSLocalizedDescription=Provisioning profile "iOS Team Inhouse Provisioning Profile: com.xxx.xxx" is Xcode managed, but signing settings require a manually managed profile.}

** EXPORT FAILED **

错误3:

Error Domain=IDEProfileQualificationErrorDomain Code=8
描述文件没有ipa包签名的权限。

错误3的文字描述:

error: exportArchive: Provisioning profile "com.xxx.xxx" doesn't include the xxx.ipa entitlement.
Error Domain=IDEProfileQualificationErrorDomain Code=8 "Provisioning profile "com.xxx.xxx" doesn't include the xxx.ipa entitlement." UserInfo={IDEProfileQualificationError_Profile=<IDEEmbeddedProvisioningProfile 0x7f84f276fd10: , NSLocalizedDescription=Provisioning profile "com.xxx.xxx" doesn't include the xxx.ipa entitlement., IDEProfileQualificationErrorMissingEntitlements=(
    "xxx.ipa"
)}

使用Xcode打包

使用Xcode打一个ipa包。打开Xcode -- General 选中Automatically manage signing,打包成功后,打开DistributionSummary.plist与我自己生成的DistributionSummary.plist进行比较发现,如下图:

我手动生成plist中的UUID和name跟在开发者账号中生成的描述文件一样,Xcode自动生成了一个In house 的描述文件,但是,竟然打包成功了,于是我把我的plist修改成跟Xcode生成的一样,结果出现了错误3。Xcode可以使用自己创建描述文件打包,但是,我们却不可以使用,因为导出的时候还是需要手动选择描述文件的。
打包命令行中输出的下面的文件地址可以前往文件夹查看输出文件,输出文件中是错误的原因:

复制蓝色划线部分,桌面 - 前往 - 前往文件夹-粘贴,可以看到四个输出文件,其中IDEDistribution.critical.log里面有错误原因,但是,跟上图中的错误是一样的。如下图:

总结:错误1、错误2出现的原因其实就是手动创建的plist中的描述文件配置和Xcode配置的不匹配的问题导致的。错误3出现的原因是没有权限。

问题解决

首先,需要打开2个:

一是钥匙串:

找到打包需要用到的证书,右键---显示简介--信任--始终信任

上图是信任过的证书,会有蓝色的+号

二是描述文件:

查找描述文件的位置:前往---前往文件夹---
~/资源库/MobileDevice/Provisioning Profiles 或者是 ~/Library/MobileDevice/Provisioning Profiles
如何查找与证书匹配的描述文件呢?
钥匙串-证书-右键-显示简介-拉到最底下-查看 SHA-1 加密的字符串,在描述文件中找到与这个相同加密的描述文件
注意:可能有多个文件,有些是Xcode自动生成的development的描述文件,可以在安装到真机的时候使用,打包导出的时候不可用。然后再找到 aps-environment: production 的文件,这个才是真正有效地描述文件。描述文件的名字也是不一样的,如果知道描述文件的具体名字也可以分辨出有效的描述文件。

在上图中,点击 空格键可以查看描述文件的详细信息,如下图:

查找与证书匹配的描述文件:

1>查看Team,查找与证书相同Team的描述文件;
2>查看SHA-1加密字符串,查找与证书相同的加密字符串;
3>查看 aps-environment,查找与自己需要的环境相匹配的;
4>查看创建日期(Creation Date)和过期日期(Expiration Date),不过这个我觉得可能不会太靠谱,有可能不是跟证书一天创建的。
基于以上几点就可以找到与证书匹配的那个有效的描述文件了。

三、Xcode配置

打开Xcode -- General 取消Automatically manage signing,自己选择证书和描述文件,如下图:

可以发现使用Xcode自动选中的证书所匹配的描述文件并不是我们打包发布需要的production的描述文件,如下图:

可能原因猜想:

1>证书配置错误:取消Xcode中的自动配置证书,手动配置需要的证书;
2>描述文件配置错误:取消Xcode中的自动配置证书,手动配置需要的证书;
3>描述文件和证书不匹配:通过证书查找到与之匹配的描述文件,删除其他不匹配/过期的描述文件;
4>忽然想起来 系统升级有个隐私权限的提醒,查看钥匙串的证书,为所有的证书的信任一栏改为始终信任,而不是系统默认的!

总结出现这种现象的原因:一是系统更新造成的证书信任与否不知道无法进行签名;二是Xcode升级导致的,选中Automatically manage signing之后,Xcode无法自动选中与发布的证书对应的描述文件;

自定义的plist文件中需要添加下图的键值对,方便脚本打包工具查找相关的描述文件:

正常的输出plist文件如下图:

需要添加的键值对,如下图:

其他错误的解决参考:

Error Domain=IDEDistributionErrorDomain Code=14

Error Domain=IDEProfileQualificationErrorDomain Code=3

Error Domain=IDEProvisioningErrorDomain Code=9 

Error Domain=IDEProvisioningErrorDomain Code=9 

iOS Provisioning Profile(Certificate)与 Code Signing 详解

provisioning profile doesn't include signing certificate

关于Python的学习,可以看一下这位大神的博客,博客的内容都十分的精良!

https://blog.csdn.net/mazy_ma/article/category/7344540

猜你喜欢

转载自blog.csdn.net/understand_XZ/article/details/80735177