0 为企业分发导出应用程序时的权利

0 Entitlements when Exporting App for Enterprise Distribution

在尝试导出我的几个 iOS 应用程序用于企业分发时,我遇到了一个问题,组织者为我的应用程序显示“0 项权利”并且没有选择配置文件。

这不会在创建 .IPA 文件时导致任何错误。但是,在我将 .ipa 和 .plist 放在我的网站上之后,该应用程序将无法成功安装。当我尝试安装时,它开始在应用程序图标上显示进度指示器,同时 "Loading..." 但随后它消失了,我收到了通用消息:

Unable to Download App - "My app name" could not be installed at this time.

带有重试选项。

我的其他几个应用程序没有这个问题,它们在管理器中显示 4 项权利和配置文件。生产供应配置文件是 "company wildcard",因此它具有结构 com.mycompanyname.* 我已确认工作代码和 non-working 代码的应用程序 ID 遵循完全相同的结构。在我 select 我的开发团队用于配置后,工作应用程序似乎自动获取配置文件,在其中一个工作应用程序中看到:

即使我在目标的构建设置中明确 select 我的生产分发配置文件,在尝试分发我的应用程序时也不包括配置文件。

为了解决问题,我已经尝试了此处答案中列出的所有步骤,以及一些 non-accepted 答案中的一些解决方法:iOS 8 - Can't Install Enterprise App。无需点击即可参考;

我已经无计可施了,想弄清楚为什么我的权利没有首先出现在组织者中,所以非常欢迎任何建议。当我的应用程序安装失败时,我在下面放了我认为是我设备控制台的相关日志(有些编辑):

Jan 19 10:37:47 My-Device-Name SpringBoard[48] <Warning>: Killing com.companyName.AppName for app installation
Jan 19 10:37:47 My-Device-Name itunesstored[82] <Warning>: LaunchServices: installing app for existing placeholder <LSApplicationProxy: 0x12ed94f40> com.companyName.AppName (Placeholder)
Jan 19 10:37:47 My-Device-Name itunesstored[82] <Warning>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x12ed94f40> com.companyName.AppName (Placeholder) withPhase:1
Jan 19 10:37:47 My-Device-Name lsd[74] <Warning>: LaunchServices: Updating installPhase for parent <NSProgress: 0x1345516b0> : Parent: 0x0 / Fraction completed: 0.5100 / Completed: 51 of 100   to 1
Jan 19 10:37:47 My-Device-Name installd[40] <Notice>: 0x100484000 -[MIClientConnection _doBackgroundInstallationForPath:withOptions:completion:]: Install of "/var/mobile/Media/Downloads/4200584489248642015/-6824318255463645847" type Customer requested by itunesstored (pid 82)
Jan 19 10:37:47 My-Device-Name installd[40] <Error>: 0x100484000 +[MIInstallable installablesAtURL:packageFormat:userOptions:error:]: 52: Failed to inspect package at file:///private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7eIGCb/extracted (Error Domain=NSPOSIXErrorDomain Code=2 "_IterateDirectory for file:///private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7eIGCb/extracted/Payload returned No such file or directory" UserInfo=0x15d61c6b0 {SourceFileLine=413, NSLocalizedDescription=_IterateDirectory for file:///private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7eIGCb/extracted/Payload returned No such file or directory, FunctionName=-[MIFileManager urlsForItemsInDirectoryAtURL:error:]})
Jan 19 10:37:47 My-Device-Name itunesstored[82] <Error>: 0x10231c000 __MobileInstallationInstallForLaunchServices_block_invoke240: Returned error Error Domain=MIInstallerErrorDomain Code=6 "Failed to inspect package at file:///private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7eIGCb/extracted" UserInfo=0x12ee51240 {NSLocalizedDescription=Failed to inspect package at file:///private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7eIGCb/extracted, LegacyErrorString=PackageInspectionFailed, FunctionName=+[MIInstallable installablesAtURL:packageFormat:userOptions:error:], SourceFileLine=52, NSUnderlyingError=0x12ef3e6f0 "_IterateDirectory for file:///private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7eIGCb/extracted/Payload returned No such file or directory"}
Jan 19 10:37:47 My-Device-Name itunesstored[82] <Warning>: ERROR: MobileInstallationInstallForLaunchServices returned nil
Jan 19 10:37:47 My-Device-Name lsd[74] <Warning>: LaunchServices: installation failed for app com.companyName.AppName
Jan 19 10:37:47 My-Device-Name itunesstored[82] <Warning>: LaunchServices: installPhaseFinishedForProgress: com.companyName.AppName.Installing - <NSProgress: 0x13004e800> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 100   called, removing progress from cache

我找到了解决问题的方法,那就是为所有应用程序创建明确的应用程序 ID。我不知道在生产应用程序中使用通配符 App ID 是否存在新问题,但是当我创建显式 ID(以及每个显式 ID 的供应配置文件)时,我不再遇到这个问题。

仍然不确定为什么我的某些应用程序选择了通配符配置文件,而其他应用程序却没有,但至少有一个解决方案可用。

很像不久前的 SSL 更改让我们蒙蔽了双眼,在 Xcode6 中,我可以通过重新阅读文档来确认,然后致电 apple 支持人员进行验证。您不能再分发具有通配符 App ID 的企业应用程序。 在您的配置文件中寻找 XC 的故事:com.company.*。

根据苹果的说法,我持有的时候,谁的技术人员制作了一个最小的测试应用程序,以及我自己的最小测试用例,您可以创建新的显式应用程序 ID 并编辑现有的配置文件以使用它们。因此对现有安装的影响最小。在 xCode 6 中使用该包 ID 后,无法确认是否可以恢复到 Xcode 5 进行存档。 我希望此信息对其他企业开发人员有所帮助。 https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/DistributingEnterpriseProgramApps/DistributingEnterpriseProgramApps.html.