gpt4 book ai didi

ios - 将 iOS 应用程序从分发身份辞职为开发人员身份

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:13 27 4
gpt4 key购买 nike

我使用持续集成工具构建应用程序,该应用程序使用 Distribution 标识和 Ad Hoc 移动设备。此应用程序在网站上发送以进行临时部署,并且一切正常。

但现在我想在我的构建工作流程中添加一个步骤来执行 UI 自动化测试。 Instruments 需要一个使用开发者身份签名的应用程序,因此我希望/需要(Q.A. 团队实际上想要)用开发者证书重新创建之前创建的 .ipa,而不是构建一个使用开发者证书签名的应用程序的新版本。我使用以下命令退出应用程序:

unzip "App.ipa"
rm -rf "Payload/App.app/_CodeSignature" "Payload/App.app/CodeResources"
cp "Dev.mobileprovision" "Payload/App.app/embedded.mobileprovision"
/usr/bin/codesign -f -s "iPhone Developer: john doe" --resource-rules "Payload/App.app/ResourceRules.plist" "Payload/App.app"

然后我使用 fruitstrap 安装“Payload/App.app”(我尝试使用管理器安装它不会改变任何东西),最后我像这样执行 Instruments :

instruments -w 5f9...3fd -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate "App" -e UIASCRIPT /Users/../automation-tests-scripts/test-instruments.js -e UIARESULTSPATH /Users/../test-reports/

仪器因以下错误而失败:

2013-11-28 14:32:56.679 instruments[68408:1007] Permission to debug com.company.App was denied.  The app must be signed with a development identity (e.g. iOS Developer).
2013-11-28 14:32:56.681 instruments[68408:1007] Recording cancelled : At least one target failed to launch; aborting run
Instruments Trace Error : Error Domain=com.apple.instruments Code=1 "Error Starting Recording" UserInfo=0x7fb15b290560 {NSLocalizedDescription=Error Starting Recording, NSLocalizedRecoverySuggestion=At least one target failed to launch; aborting run}
Instruments Trace Error : Failed to start trace.

这些命令适用于在 iOS 6.x 上运行的 iOS 设备,但仅在 iOS 7.x 上失败并出现之前的错误(我尝试了 2 台 iOS 6.x 设备,iPhone 4S 和 5,我还尝试了 4 台运行的设备iOS 7.x)。所以问题与 iOS 7 有关。

如果应用程序是直接使用 Developer 身份构建的,那么它运行良好,所以我猜想在签名阶段出现了问题。我还在辞职的应用程序上做了一个 codesign -d -vvv,它显示了这个输出

Executable=/Users/.../App.app/App Identifier=com.company.App
Format=bundle with Mach-O universal (armv7 armv7s)
CodeDirectory v=20100 size=8547 flags=0x0(none) hashes=420+3 location=embedded
Hash type=sha1 size=20 CDHash=f00fac8eabf174e88042f2b875505a6cacdd6b0a
Signature size=4326
Authority=iPhone Developer: john doe (BXX559V2VW)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=28 nov. 2013 11:56:04
Info.plist entries=27
Sealed Resources version=2 rules=5 files=290
Internal requirements count=2 size=708

我查看了 Xcode 签名过程,它导出了一个“CODESIGN_ALLOCATE”变量,我试过了,但没有取得更大的成功。

PS:我在某处读到有关“iOS Developer”的信息,它可以取代证书标题中的“iPhone Developer”,但我没有找到更多相关信息。

最佳答案

如果您想调整您的原始权利,您可以这样做。

获取原始分发权利:

/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i production.app/embedded.mobileprovision) > entitlements.plist

将它们转化为开发权利

/usr/libexec/PlistBuddy -c 'Set :get-task-allow true' entitlements.plist

并更新任何其他可能不同的权利,例如推送通知

/usr/libexec/PlistBuddy -c'Set :aps-environment development' entitlements.plist

附注无需删除 _CodeSignature,codesign -f 将为您替换它。

关于ios - 将 iOS 应用程序从分发身份辞职为开发人员身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20268172/

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