gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:54:46 32 4
gpt4 key购买 nike

我需要找到一种方法让黑盒辞职再次工作,最好不需要在辞职期间被替换的虚拟 AppStore 分发证书。

背景说明:

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

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

当辞职是替换证书、供应配置文件和捆绑标识符时,是否有可能为 企业 导出方法构建并且如果它们被替换就辞职?

尝试这样做会在将已辞职的 .ipa 文件上传到 AppStore 时产生错误。

ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.

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

最佳答案

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

#!/bin/bash

for ARGUMENT in "$@"
do

KEY=$(echo $ARGUMENT | cut -f1 -d=)
VALUE=$(echo $ARGUMENT | cut -f2 -d=)

case "$KEY" in
ipa_path) ipaPath=${VALUE} ;; # Format: "Path/to/app.ipa"
archive_path) archivePath=${VALUE} ;; # Format: "Path/to/app.xcarchive"
toolchain_path) toolchainPath=${VALUE} ;; # Format: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos"
*)
esac

done

# Derived Variables
ipaDirectory=$(dirname "$ipaPath")
ipaName=$(basename "$ipaPath")
zipName=${ipaName/.ipa/.zip}
appName=${ipaName/.ipa/}
zipSuffix=-unzipped
unzippedDirectoryName=${appName}${zipSuffix}
newIpaSuffix=-with-swift-support
newIpaName=${appName}${newIpaSuffix}
swiftSupportPath=SwiftSupport/iphoneos
ipaSwiftSupportDirectory=${ipaDirectory}/${unzippedDirectoryName}/${swiftSupportPath}

# Changes the .ipa file extension to .zip and unzips it
function unzipIPA {
mv "${ipaDirectory}/${ipaName}" "${ipaDirectory}/${zipName}"
unzip "${ipaDirectory}/${zipName}" -d "${ipaDirectory}/${unzippedDirectoryName}"
}

# Copies the SwiftSupport folder from the .xcarchive into the .ipa
function copySwiftSupportFromArchiveIntoIPA {
mkdir -p "$ipaSwiftSupportDirectory"
cd "${archivePath}/${swiftSupportPath}"
for file in *.dylib; do
cp "$file" "$ipaSwiftSupportDirectory"
done
}

# Creates the SwiftSupport folder from the Xcode toolchain and copies it into the .ipa
function copySwiftSupportFromToolchainIntoIPA {
mkdir -p "$ipaSwiftSupportDirectory"
cd "${ipaDirectory}/${unzippedDirectoryName}/Payload/${appName}.app/Frameworks"
for file in *.dylib; do
cp "${toolchainPath}/${file}" "$ipaSwiftSupportDirectory"
done
}

# Adds the SwiftSupport folder from one of two sources depending on the presence of an .xcarchive
function addSwiftSupportFolder {
if [ -z "$archivePath" ]
then
copySwiftSupportFromToolchainIntoIPA
else
copySwiftSupportFromArchiveIntoIPA
fi
}

# Zips the new folder back up and changes the extension to .ipa
function createAppStoreIPA {
cd "${ipaDirectory}/${unzippedDirectoryName}"
zip -r "${ipaDirectory}/${newIpaName}.zip" ./*
mv "${ipaDirectory}/${newIpaName}.zip" "${ipaDirectory}/${newIpaName}.ipa"
}

# Renames original .ipa and deletes the unzipped folder
function cleanUp {
mv "${ipaDirectory}/${zipName}" "${ipaDirectory}/${ipaName}"
rm -r "${ipaDirectory}/${unzippedDirectoryName}"
}

# Execute Steps
unzipIPA
addSwiftSupportFolder
createAppStoreIPA
cleanUp

它也可以作为要点提供:https://gist.github.com/adamzarn/6bb89d91ed4b8c3d3fb25363c221441f

用法:

  1. 将脚本复制到文本编辑器中,不带扩展名保存
  2. 像这样让它可执行:chmod +x path/to/script
  3. 通过以下两种方式之一从终端运行它:
  • path/to/script ipa_path="path/to/ipa"archive_path="path/to/xcarchive"
  • path/to/script ipa_path="path/to/ipa"toolchain_path="path/to/toolchain"

如果您有权访问生成 .ipa.xcarchive,脚本将从那里获取 SwiftSupport 文件夹。否则,它将通过查看 .app 文件来确定需要哪些 .dylib 文件,然后从 Xcode 工具链生成一个 SwiftSupport 文件夹。

如果您使用的是 Xcode 工具链,请确保您提供的路径包含 .dylib 文件列表。这是一个示例路径:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos

对于 Xcode 10,该路径包含一个 swift 文件夹,但对于 Xcode 11,必须使用 swift-5.0

我已经对此进行了测试,它成功解决了 Apple 在 App Store 中分发时引发的 Invalid Swift Support 错误,没有任何负面影响。

关于iOS 使用应用商店证书退出企业 IPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57214466/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com