【问题标题】:iOS 8.1.3 - Enterprise Distribution - Application is missing the application-identifier entitlementiOS 8.1.3 - 企业分发 - 应用程序缺少应用程序标识符权利
【发布时间】:2015-04-06 22:37:13
【问题描述】:

我在使用 iOS 8.1.3 上的 Enterprise Distribution 时遇到了很多问题。 我设法修复了大部分出现此错误的安装:

Ignore manifest download, already have bundleID

有了这个答案:https://stackoverflow.com/a/25948839/517688

这基本上告诉你在服务器 manifest.plist 上伪造 bundleID。

但在我的一些测试设备上,更改后我收到了一个新错误:

Error Domain=MIInstallerErrorDomain Code=63 "Application is missing the application-identifier entitlement."

而且我似乎找不到解决这个问题的方法。

编辑 1

我尝试将其添加到 .entitlements 文件中:

<key>application-identifier</key>
<string>com.domain.appname</string>

但现在我在尝试归档应用以供分发时遇到此错误:

None of the valid provisioning profiles allowed the specified entitlements: application-identifier, aps-environment.

【问题讨论】:

    标签: ios xcode ios8 enterprise-distribution


    【解决方案1】:

    应用标识符授权格式不正确;

    它应该包含您的 10 个字符的 App ID 种子,后跟一个点,然后是您的包标识符:

    XXXXXXXXXX.com.domain.appname
    

    【讨论】:

    【解决方案2】:

    此问题是由 Apple 的 8.1.3 安全补丁引起的。您可以看到来自Apple Developer forums 的讨论。

    bllakjakk 的回答是对的。但为了清楚起见,10 个字符的 App ID 种子称为团队 ID,您可以从会员中心的组织资料中找到它。

    【讨论】:

    • 但是如何添加呢?
    【解决方案3】:

    根据 Apple 的技术说明

    (your_app) 安装失败 无法下载应用程序,(your_app) 目前无法下载。 应用程序缺少应用程序标识符权利 升级的应用程序标识符授权字符串 ({Your New App ID Prefix}.com,YourApp.Bundle.ID) 与已安装应用程序的应用程序标识符字符串 (({Your Old App ID Prefix}.YourApp.Bundle.ID) 不匹配;拒绝升级。

    Installation Failure Errors

    所以你需要遵守这个。

    【讨论】:

      【解决方案4】:

      我已经按照这篇文章中的步骤解决了这个问题: https://stackoverflow.com/a/28235443/2638825

      对于已由第三方签名的应用,您要使用企业证书退出(本演练假设 ipa 文件为 AcmeApp.ipa,您的权利文件为 entitlements.plist 和您的配置文件是 provProvile.mobileprovision;所有文件都在 Desktop 文件夹中 (Mac OSX),S836XXACME 是您的团队标识符):

      创建一个新的 entitlements.plist 文件:

      <?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>application-identifier</key>
      <string>S836XXACME.uk.co.acme.AcmeApp</string>
      <key>get-task-allow</key>
      <false/>
      </dict>
      </plist>
      

      解压ipa:

      cd ~/Desktop
      
      unzip AcmeApp.ipa
      

      删除代码签名:

      rm -r Payload/AcmeApp.app/_CodeSignature/ 
      

      复制到 mobileprovision 文件中:

      cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision
      

      代码设计:

      codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
      

      把它压缩成辞职的ipa:

      zip -qr AcmeApp_resigned.ipa Payload/
      

      您还需要根据之前“已经”签名的部分修改 manifest.plist 文件:

      <key>bundle-identifier</key>
      <string>S836XXACME.uk.co.acme.AcmeApp</string>
      

      我在 iOS 8.4.1、8.4、8.0.2 和 7.1.1 设备上尝试了这个解决方案,它对我有用。

      谢谢“马克张伯伦”:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-23
        相关资源
        最近更新 更多