iOS部署失败并且权利无效 - 但权利是否有效?

问题描述 投票:0回答:1

我的同事最近对我们的应用程序进行了一些更改,并启用了数据保护。

但是,从那时起,我们无法将应用程序部署到任何真实设备。在使用此错误的应用程序验证时发生错误:

ApplicationVerificationFailed: Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.YDQn6e/extracted/[appname].app : 0xe8008016 (The executable was signed with invalid entitlements.) 

(由于NDA要求,我必须隐藏任何日志中的任何识别信息,等等,我用[]括号中的静态标签替换它们。

我使用安全和代码签名工具使用Apple自己的指南检查了权利。

codesign输出以下信息:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>get-task-allow</key>
    <false/>
    <key>application-identifier</key>
    <string>[teamId].[appname]</string>
    <key>com.apple.developer.team-identifier</key>
    <string>[teamId]</string>
    <key>aps-environment</key>
    <string>production</string>
    <key>keychain-access-groups</key>
    <array>
        <string>[teamId].[appname]</string>
    </array>
</dict>
</plist>

这是security命令的输出:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>AppIDName</key>
    <string>[appPublicName]</string>
    <key>ApplicationIdentifierPrefix</key>
    <array>
    <string>[teamId]</string>
    </array>
    <key>CreationDate</key>
    <date>2017-07-06T11:55:52Z</date>
    <key>Platform</key>
    <array>
        <string>iOS</string>
    </array>
    <key>DeveloperCertificates</key>
    <array>
        <data>[devCert]</data>
    </array>
    <key>Entitlements</key>
    <dict>
        <key>keychain-access-groups</key>
        <array>
            <string>[teamId].*</string>     
        </array>
        <key>get-task-allow</key>
        <false/>
        <key>application-identifier</key>
        <string>[teamId].[appname]</string>
        <key>com.apple.developer.associated-domains</key>
        <string>*</string>
        <key>com.apple.developer.team-identifier</key>
        <string>[teamId]</string>
        <key>aps-environment</key>
        <string>production</string>
    </dict>
    <key>ExpirationDate</key>
    <date>2018-04-25T13:18:41Z</date>
    <key>Name</key>
    <string>[appPublicName]</string>
    <key>ProvisionedDevices</key>
    <array>
        [provisioned devices]
        [The device I'm trying to deploy to is listed here]
    </array>
    <key>TeamIdentifier</key>
    <array>
        <string>[teamId]</string>
    </array>
    <key>TeamName</key>
    <string>[teamName]</string>
    <key>TimeToLive</key>
    <integer>293</integer>
    <key>UUID</key>
    <string>[id]</string>
    <key>Version</key>
    <integer>1</integer>
</dict>
</plist>

这究竟出了什么问题?

ios provisioning-profile ios-provisioning codesign
1个回答
0
投票

如果您不使用自动代码签名,则在iOS应用程序中更新权利需要几个步骤。您需要更新应用程序的项目和用于构建应用程序的配置文件。如果两者不同步(或者更确切地说,如果您的应用尝试使用配置文件允许的权利不允许的权利,则会出现此错误。

更改权利时,您需要更新项目本身(如文档here)以及配置文件中的权利。我怀疑这是你到目前为止所做的一切。

要更新配置文件中的权利,请登录Apple开发人员站点并转到“证书,标识符和配置文件”部分。选择左侧的应用程序ID,找到您要构建的应用程序的应用程序ID。单击编辑按钮并启用Data Protection的权利。完成此操作后,单击“完成”。现在已配置应用ID,但您需要重新生成配置文件以获取应用ID的更改。转到左侧的“配置配置文件”链接,找到应用程序ID的配置文件,单击“编辑”,然后单击底部的“生成”按钮。完成后,单击下载按钮以获取具有App ID新权利的新配置文件。

另外,为了安全起见,我会在下载并安装新的配置文件之前从Mac中删除所有旧的配置文件。这样您就可以确定它正在获取正确的配置文件。您可以找到供应配置文件here的位置。

© www.soinside.com 2019 - 2024. All rights reserved.