13

我创建了一个通用应用程序。我正在尝试使用我们的企业开发人员许可证分发应用程序。

问题是这样的:如果我在注册了 UUID 的设备上安装应用程序,则应用程序安装正常。如果我“尝试”在未注册 UUID 的设备上安装应用程序,安装将无法完成。我收到消息“无法下载应用程序”“我的应用程序”此时无法安装。

这是我得到的日志:

Sep  5 10:47:07 my-iPad installd[54] <Error>: 0x2c3000 handle_install: Install of "/var/mobile/Media/PublicStaging/My App.app" requested by mobile_installation_proxy
Sep  5 10:47:08 my-iPad installd[54] <Error>: 0x2c3000 MobileInstallationInstall_Server: Installing app com.mysite.My-App
Sep  5 10:47:08 my-iPad installd[54] <Error>: profile not valid: 0xe8008012
Sep  5 10:47:08 my-iPad installd[54] <Error>: 0x2c3000 install_embedded_profile: Could not install embedded profile: 0xe8008012
Sep  5 10:47:08 my-iPad installd[54] <Error>: Sep  5 10:47:08  SecTrustEvaluate  [leaf CriticalExtensions IssuerCommonName]
Sep  5 10:47:09 my-iPad installd[54] <Error>: 0x2c3000 verify_signer_identity: MISValidateSignatureAndCopyInfo failed for /var/tmp/install_staging.xjOLHU/My Appp.app/My App: 0xe8008015
Sep  5 10:47:09 my-iPad installd[54] <Error>: 0x2c3000 do_preflight_verification: Could not verify executable at /var/tmp/install_staging.xjOLHU/My App.app
Sep  5 10:47:09 my-iPad installd[54] <Error>: 0x2c3000 install_application: Could not preflight application install
Sep  5 10:47:09 my-iPad mobile_installation_proxy[907] <Error>: 0x3cadbb78 MobileInstallationInstall: failed with -1
Sep  5 10:47:09 my-iPad mobile_installation_proxy[907] <Error>: handle_install: Installation failed
Sep  5 10:47:10 mu-iPad installd[54] <Error>: 0x2c3000 handle_install: API failed

我已经完成了通常的故障排除:

  • 创建新证书,确保我拥有用于​​内部分发的证书
  • 创建新的分布配置文件
  • 确保 .ipa 使用分发/临时配置文件进行签名
  • 验证我的 .plist 是正确的
  • 使用简单的网页安装(同样的问题)
  • 使用 iPhone 配置实用程序安装(同样的问题)
  • 根据其他人的经验,大约有一百万个其他更深奥的构建模式等等……等等……等等……

我很确定问题与分发配置文件有关。错误日志似乎指向配置文件的问题(“配置文件无效:0xe800812”)。我已经与 Apple 支持人员进行了交谈,他们说证书和配置文件似乎是正确的。

我的一个支持电话让我感到困惑。苹果代表说,即使在使用企业许可证构建应用程序以进行分发时,您仍然需要注册所有设备的 UUID。我不认为这是准确的。根据我的研究,.ipa 包含已安装的嵌入式配置文件,您无需注册所有设备。

但是,就像我之前说的:如果我在分发/临时配置文件中包含的设备上运行安装,它就可以工作。我完全糊涂了,迫切需要帮助。

4

4 回答 4

38
  1. 获取您的 IPA 文件,将其重命名为具有 .zip 扩展名。
  2. 解压缩此文件并在 Finder 中打开 Payload 目录。
  3. 右键单击您的应用程序,然后单击显示包内容。
  4. 找到文件 embedded.mobileprovision,然后在文本编辑器(如 TextEdit)中打开该文件。

现在,如果您在此 XML 文档中看到 的密钥ProvisionedDevices,则说明您没有使用正确的配置文件进行签名。您需要改为创建In House配置文件。如果您使用 In House 配置文件正确签署了您的应用程序,您将不会ProvisionedDevices在您的 embedded.mobileprovsion 文件中看到密钥,而是 的密钥ProvisionsAllDevices,它将是true.

于 2013-09-05T17:48:13.680 回答
3

出现此错误的原因是因为在 iOS 7.1 Beta 中,指向 plist 的链接必须是 https 格式。如果 URL 没有以 https 格式提供给您,只需将 http 更改为 https,如下:itms-services://?action=download-manifest&url= https://hostname.utest.com/OTA_App_Name.plist 然后,将整个链接(从 itms-services 开始)复制并粘贴到 Safari 中,您将能够使用 OTA 下载和安装该应用程序。

于 2014-03-12T05:31:37.293 回答
2

如果这有任何帮助,我遇到了同样的问题,并且确实使用了企业证书,但问题来自 ipa 本身。

不应该使用 xcodebuild 创建 ipa

xcodebuild \
 -exportArchive \
 -exportFormat IPA \
 -exportPath "$BUILD_PATH/$PRODUCT_NAME.ipa" \
 -archivePath "$BUILD_PATH/$PRODUCT_NAME.xcarchive

而是使用 xcrun

xcrun -sdk iphoneos PackageApplication \
  -v $BUILD_PATH/$PRODUCT_NAME.xcarchive/Products/Applications/$PROJECT_NAME.app \
  -o $BUILD_PATH/$PRODUCT_NAME.ipa

因为否则在archived-expanded-entitlements.xcent创建 ipa 期间会删除文件,这会导致相同的错误。

于 2014-08-05T15:20:44.543 回答
1

我同意你的观点,企业证书不需要注册设备。您的个人资料似乎不是“链接”到您的企业证书而是临时证书,这可能吗?(如果您有多个证书)。您是否尝试在钥匙串访问中删除并重新安装证书?

于 2013-09-05T17:31:25.037 回答