我现在已经挣扎了几天......
我有一个在AdHoc中运行良好的应用程序,现在我正在向客户提供.ipa,以便上传到他们的私人商店。
我使用XCode6.4和Swift,并通过xCode存档。
在第一次尝试期间,应用程序因为以下日志而崩溃:
Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/F223C4F8-4CBA-4474-9809-79D80C5AB11F/appname.app/appname
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/F223C4F8-4CBA-4474-9809-79D80C5AB11F/appname.app/Frameworks/libswiftCore.dylib: code signature invalid for '/private/var/mobile/Containers/Bundle/Application/F223C4F8-4CBA-4474-9809-79D80C5AB11F/appname.app/Frameworks/libswiftCore.dylib'
Dyld Version: 353.12
经过多次尝试修复此问题后,我尝试手动签署该应用。 解压缩" somename.ipa"我得到一个" somename"包含3个子文件夹的文件夹:Payload,SwiftSupport,Symbols。 我跑了: codesign --force --verbose --sign' iPhone发行版:证书' appname.app /
然后: codesign --force --verbose --sign' iPhone发行版:证书' appname.app/Frameworks / *
生成的CodeResources文件看起来和以前完全一样。所以我反过来做了 - 首先签署框架,然后签署应用程序。这次我得到了一个CodeResources文件,该文件对于框架文件具有不同的哈希值,并且与其他文件一样具有相同的哈希值。
现在,我压缩了#34; somename"文件夹并更改了扩展名" .zip"到" .ipa"。请注意,它仍然具有相同的结构。
现在,当客户尝试上传时,他们会得到以下答案: "提交错误:此版本未通过自动验证 致命错误: - 应用程序目录结构应为Payload / appname.app /"
.ipa确实包含了该目录,我检查了两倍和三倍,以及(新)Swift顶级目录和符号文件目录。
不知道该怎么做......
答案 0 :(得分:0)
我正在使用以下脚本命令将应用程序重新签名:
#Pulls the entitlements out of the provision profile
/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i $PROVISION_PATH/$ADHOC_PROVISION) > entitlements.plist
#Remove old CodeSignature
rm -rf Payload/$1.app/_CodeSignature Payload/$1.app/CodeResources
# Replace embedded mobile provisioning profile
cp $PROVISION_PATH/$ADHOC_PROVISION Payload/$1.app/embedded.mobileprovision
# Re-sign
/usr/bin/codesign --verify -f --sign "iphone distribution" --resource-rules=Payload/$1.app/ResourceRules.plist --entitlements entitlements.plist Payload/$1.app
# Re-package
zip -qr $1.adhoc.ipa Payload
其中
$ 1 - 申请名称
$ PROVISION_PATH / $ ADHOC_PROVISION - 新配置文件