iOS使用应用商店证书退出企业IPA

iOS使用应用商店证书退出企业IPA,ios,app-store,fastlane,Ios,App Store,Fastlane,我需要找到一种方法使blackbox辞职再次生效,最好不需要在辞职期间更换虚拟AppStore分发证书 背景说明: 我们有一个设置,其中另一个部门有一个辞职作业,可以接收IPA并使用其自己的证书和配置文件辞职,并设置适当的捆绑标识 此辞职作业的输入.ipa文件以前是使用另一个AppStore分发证书和相应的配置文件的app store导出方法生成的。这样就可以毫无问题地上传output.ipa文件 当执行“辞职”操作时,是否可以为企业导出方法构建配置文件和捆绑包标识符,并在替换它们时辞职? 尝试

我需要找到一种方法使blackbox辞职再次生效,最好不需要在辞职期间更换虚拟AppStore分发证书

背景说明:

我们有一个设置,其中另一个部门有一个辞职作业,可以接收IPA并使用其自己的证书和配置文件辞职,并设置适当的捆绑标识

此辞职作业的输入.ipa文件以前是使用另一个AppStore分发证书和相应的配置文件的app store导出方法生成的。这样就可以毫无问题地上传output.ipa文件

当执行“辞职”操作时,是否可以为企业导出方法构建配置文件和捆绑包标识符,并在替换它们时辞职?

尝试此操作会在将已辞职的.ipa文件上载到AppStore时出错

ITMS-90426:Swift支持无效-缺少SwiftSupport文件夹。使用Xcode的当前公共(GM)版本重新构建应用程序并重新提交

我猜这是由于导出方法,因为构建配置的其余部分是相同的(尽管使用了适当的证书和配置文件)
尝试使用企业证书进行初始签名的原因是input developer程序应该被淘汰。

当二进制文件缺少swift支持文件夹时,会出现此错误。我在尝试为iOS构建chromium应用程序时遇到了相同的错误。解决方案并不简单,您需要自己嵌入文件夹。首先,您需要检查在第三方(如libxswiftCore.dylib)中使用的swift库


创建名为SwiftSupport的文件夹在该文件夹下创建iphoneos文件夹,将所有必需的动态库文件放在该文件夹中,确保这些动态库文件应由全球苹果证书签名,而不是您自己的证书签名。然后再创建一个文件夹负载,并将.app文件放在其中。确保SwiftSupport和有效负载应位于同一层次结构上。确保您的zip文件不应包含.DS_存储文件,请删除这些文件。我为这项工作创建了一个脚本,但该公司的财产,让我知道,如果这仍然不适合你。或者你可以给我写封电子邮件。舒克特。developer@gmail.com

我创建了一个脚本,将
SwiftSupport
文件夹添加到缺少它的
.ipa
(即为企业发行版生成的文件夹):

#/bin/bash
对于“$@”中的参数
做
KEY=$(echo$参数| cut-f1-d=)
VALUE=$(echo$参数| cut-f2-d=)
中的大小写“$KEY”
ipa_路径)ipaPath=${VALUE};;#格式:“路径/to/app.ipa”
archive_path)archivePath=${VALUE};;#格式:“路径/to/app.xarchive”
工具链路径)工具链路径=${VALUE};;#格式:“/Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/lib/swift-5.0/iphoneos”
*)
以撒
完成
#派生变量
ipaDirectory=$(目录名“$ipaPath”)
ipaName=$(基本名称“$ipaPath”)
zipName=${ipaName/.ipa/.zip}
appName=${ipaName/.ipa/}
zipSuffix=-解压缩
unzippedDirectoryName=${appName}${zipSuffix}
newIpaSuffix=-支持swift
newIpaName=${appName}${newIpaSuffix}
swiftSupportPath=SwiftSupport/iphoneos
ipaSwiftSupportDirectory=${ipaDirectory}/${unzippedDirectoryName}/${swiftSupportPath}
#将.ipa文件扩展名更改为.zip并将其解压缩
乌兹皮帕函数{
mv“${ipaDirectory}/${ipaName}”“${ipaDirectory}/${zipName}”
解压“${ipaDirectory}/${zipName}”-d“${ipaDirectory}/${unzippedDirectoryName}”
}
#将SwiftSupport文件夹从.xC存档复制到.ipa
功能CopySwiftsSupportFromArchiveIntoIPA{
mkdir-p“$ipaSwiftSupportDirectory”
cd“${archivePath}/${swiftSupportPath}”
对于*.dylib;do中的文件
cp“$file”“$ipaSwiftSupportDirectory”
完成
}
#从Xcode工具链创建SwiftSupport文件夹,并将其复制到.ipa中
功能CopySwiftsSupport从ToolChain到IPA{
mkdir-p“$ipaSwiftSupportDirectory”
cd“${ipaDirectory}/${unzippedDirectoryName}/Payload/${appName}.app/Frameworks”
对于*.dylib;do中的文件
cp“${toolchainPath}/${file}”“$ipaSwiftSupportDirectory”
完成
}
#根据.xC存档的存在,从两个源之一添加SwiftSupport文件夹
函数addSwiftSupportFolder{
如果[-z“$archivePath”]
然后
从Toolchain到IPA的CopySwiftsSupport
其他的
来自ArchiveIntoIPA的CopySwifts支持
fi
}
#将新文件夹压缩备份并将扩展名更改为.ipa
函数createAppStoreIPA{
cd“${ipaDirectory}/${unzippedDirectoryName}”
zip-r“${ipaDirectory}/${newIpaName}.zip”/*
mv“${ipaDirectory}/${newIpaName}.zip”“${ipaDirectory}/${newIpaName}.ipa”
}
#重命名original.ipa并删除解压缩的文件夹
函数清理{
mv“${ipaDirectory}/${zipName}”“${ipaDirectory}/${ipaName}”
rm-r“${ipaDirectory}/${unzippedDirectoryName}”
}
#执行步骤
乌兹皮帕
addSwiftSupportFolder
createAppStoreIPA
清理
它还可以作为要点提供:

用法:

  • 将脚本复制到文本编辑器中并保存,不带扩展名
  • 让它像这样可执行:
    chmod+x path/to/script
  • 从终端以以下两种方式之一运行:
    • path/to/script ipa\u path=“path/to/ipa”archive\u path=“path/to/xccarchive”
    • path/to/script ipa\u path=“path/to/ipa”工具链\u path=“path/to/toolchain”
    如果您有权访问生成
    .ipa
    .xarchive
    ,脚本将从那里获得
    SwiftSupport
    文件夹。否则,它将通过查看
    .app
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos