iOS 8 - 无法安装企业应用程序
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25733299/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
iOS 8 - Can't Install Enterprise App
提问by Dylan Hand
Our company has an app that can be downloaded through a website using Enterprise Distribution.
我们公司有一个应用程序,可以使用 Enterprise Distribution 通过网站下载。
In iOS 8 Beta 5, tapping the download link brings up the expected pop-up "(website) would like to install (App Name)". Tapping 'install' on that dialog first causes the app to get stuck "Waiting..."
在 iOS 8 Beta 5 中,点击下载链接会出现预期的弹出窗口“(网站)想要安装(应用程序名称)”。在该对话框上点击“安装”首先会导致应用卡在“等待...”
Until it finally indicates: "Unable to Download App (app name) could not be downloaded at this time."
直到最后提示:“无法下载应用程序(应用程序名称),此时无法下载。”
Installing works as expected using iOS 7.
使用 iOS 7 安装按预期工作。
Running the app from Xcode under iOS 8 works.
在 iOS 8 下从 Xcode 运行应用程序是可行的。
How do we support Enterprise Distribution iOS 8?
我们如何支持 Enterprise Distribution iOS 8?
Perhaps a change needs to be made to the Manifest file? When I tried building the app in Xcode 6 Beta 7, the Enterprise Archival process did not prompt me to make a manifest file...
也许需要对清单文件进行更改?当我尝试在 Xcode 6 Beta 7 中构建应用程序时,企业存档过程没有提示我制作清单文件...
采纳答案by William George
Looking through the console of the phone whist attempting to install one of my apps, I discovered:
通过尝试安装我的应用程序之一的手机控制台,我发现:
Sep 9 12:16:56 iPhone misagent[94] <Error>: attempt to install invalid profile: 0xe8008011
Sep 9 12:16:56 iPhone installd[40] <Error>: 0x100484000 -[MIInstallableBundle _installEmbeddedProfileInBundle:]: Could not install embedded profile: 0xe8008011 (Expired)
Reasons unbeknown to me, apple invalidated half of my profiles and failed to alert me. After going into developer.apple.com find any invalid profiles:
由于我不知道的原因,苹果使我的一半个人资料无效并且没有提醒我。进入 developer.apple.com 后,找到任何无效的配置文件:
Hit Edit
- > Generate
-> Download
Rebuild the application with the new profile.
点击Edit
-> Generate
->Download
使用新配置文件重建应用程序。
However - The bad news still at least one of my apps is failing to install. Looking through the console gives me nothing. I am convinced this is an apple bug so have filed a radar: 17622725
但是 - 坏消息仍然是至少我的一个应用程序无法安装。通过控制台查看什么也没给我。我确信这是一个苹果错误,因此已提交雷达:17622725
I hope your issue is a profile problem otherwise we may have to wait until tonight 1800GMT to see if apple have fixed it.
我希望你的问题是个人资料问题,否则我们可能要等到今晚 1800GMT 才能看到苹果是否修复了它。
EDIT
编辑
With iOS8 GM - I just get Waiting...
- I will keep you informed with the bug report progress.
使用 iOS8 GM - 我刚知道Waiting...
- 我会随时通知你错误报告的进展。
EDIT
编辑
After troubleshooting a few of fixes have been found:
故障排除后,发现了一些修复程序:
Fix 1
修复 1
As of iOS8, if the images you are linking to in the manifest plist do not exist - Apple will not install the application on the phone - The manifest being the file that you link to on the download page: itms-services://?action=download-manifest&url={url}
从 iOS8 开始,如果您在清单 plist 中链接到的图像不存在 - Apple 将不会在手机上安装该应用程序 - 清单是您在下载页面上链接到的文件: itms-services://?action=download-manifest&url={url}
Make sure both full-size-image
and display-image
exist:
确保两个full-size-image
和display-image
存在:
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://{path_to_real_image}</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://{path_to_real_image}</string>
</dict>
Fix 2
修复 2
Enterprise applications will not install if they existed previously on iOS7 due to a bug with iOS8. An error appears in the console:
由于 iOS8 的错误,如果企业应用程序之前存在于 iOS7 上,则它们将不会安装。控制台中出现错误:
Ignore manifest download, already have bundleID: {bundle_id}
This can be fixed by temporarily changing the bundleID
in the manifest file, but apple are aware as they marked the bug report as duplicated. After internal tests you an also fix the problem by resting the home screen layout General -> Reset -> Reset Home Screen Layout
这可以通过临时更改bundleID
清单文件中的 来解决,但 Apple 知道,因为他们将错误报告标记为重复。内部测试后,您还可以通过休息主屏幕布局来解决问题General -> Reset -> Reset Home Screen Layout
Fix 3
修复 3
If you see the application get into the installing...
stage as opposed to loading...
almost certainly the problem is the embedded provisioning profile
has expired, to fix the download you will need to re-archive you application with a new, updated provisioning profile.
如果您看到应用程序进入installing...
阶段而不是loading...
几乎可以肯定问题是embedded provisioning profile
已过期,要修复下载,您将需要使用新的、更新的配置文件重新存档您的应用程序。
Fix 4
修复 4
If you see the application get to the installing...
stage and your provisioning profile
is valid - Download the application whilst attached to your console. (Xcode 6 > Window > Devices > Bottom Left Button [v]), You will probably find that the install failed with Verification Stage Failed
a little below will be the error message. In my case (Entitlements found that are not permitted by provisioning profile)
- For this error goto developer.apple.com and update your App Identifier to include the correct service. For me App Groups
needed to be enabled. Then regenerate your provisioning profile
如果您看到该应用程序进入installing...
舞台并且您provisioning profile
是有效的 - 下载该应用程序并连接到您的控制台。(Xcode 6 > Window > Devices > Bottom Left Button [v]),您可能会发现安装失败,Verification Stage Failed
下面是错误消息。就我而言(Entitlements found that are not permitted by provisioning profile)
- 对于此错误,请转到 developer.apple.com 并更新您的应用程序标识符以包含正确的服务。对我来说App Groups
需要启用。然后重新生成你的provisioning profile
回答by ecaste
I got the same problem today: I couldn't install one of my Enterprise app on IOs8 (but on IOs7). After many hours of search, I finally read this message on the device console :
我今天遇到了同样的问题:我无法在 IOs8(但在 IOs7)上安装我的企业应用程序之一。经过几个小时的搜索,我终于在设备控制台上看到了这条消息:
<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.ecaste.Crew-Desk
After a long time of searching, I finally read this post : http://support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate-manually-etc
经过长时间的搜索,我终于读到了这篇文章:http: //support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate-manually-etc
And by the end I just changed the name of the plist and the link to download the ipa (probably the second is not needed), and finally the app gets installed.
最后我只是更改了 plist 的名称和下载 ipa 的链接(可能不需要第二个),最后安装了应用程序。
Finally it seems that it was a Cache problem in IOs8 that considers the app was already installed (and that was not the case, I uninstalled it previously).
最后似乎是 IOs8 中的缓存问题,认为该应用程序已经安装(事实并非如此,我之前卸载了它)。
Hope this help
希望这有帮助
回答by Eva Madrazo
Same error here, I have tried changing bundle-id, bundle-version, plist... but the error remains.
同样的错误,我尝试更改 bundle-id、bundle-version、plist ......但错误仍然存在。
I know that this is a bit tricky, but this is the only thing that works for me:
我知道这有点棘手,但这是唯一对我有用的方法:
- Connect the device to a Mac or PC
Create a backup in iTunes
Install iExplorer: http://www.macroplant.com/iexplorer/
Start iExplorer, then select the demo mode
In the left sidebar, select Media, then open the Downloads folder, and delete all files in it
Restart the device
Open the download page and install the latest version of your app
- 将设备连接到 Mac 或 PC
在 iTunes 中创建备份
安装 iExplorer:http: //www.macroplant.com/iexplorer/
启动 iExplorer,然后选择演示模式
在左侧边栏中,选择媒体,然后打开下载文件夹,并删除其中的所有文件
重启设备
打开下载页面并安装最新版本的应用
Indeed I omit the first two steps and it works perfect :)
事实上,我省略了前两个步骤,它完美地工作:)
I hope this helps
我希望这有帮助
回答by Shrikant Tanwade
Set Deployment Target Lower in
将部署目标设置得更低
Project > Build Setting > iOS Deployment Target
项目 > 构建设置 > iOS 部署目标
Targets > Build Setting > iOS Deployment Target
目标 > 构建设置 > iOS 部署目标
回答by Steven Tsang
I just had this problem right now and it was caused by the mainfest plist (keys: full-size-image + display-image) are pointing at url image locations that do not exist.
我现在刚遇到这个问题,它是由 mainfest plist(键:全尺寸图像 + 显示图像)指向不存在的 url 图像位置引起的。
It looks like that iOS6/iOS7 are able to handle if the images do not exist but iOS8 is more restrictive about this.
如果图像不存在,iOS6/iOS7 似乎能够处理,但 iOS8 对此有更多限制。
回答by Chris J
Based on previous comments on the "ignore manifest download" message, we tried changing the bundle ID (ie com.companyName.AppName) in the .plist to have a unique name, to force iOS 8 to download/install it anyway. After it gets installed, it correctly replaces the existing copy.
根据之前对“忽略清单下载”消息的评论,我们尝试更改 .plist 中的包 ID(即 com.companyName.AppName)以具有唯一名称,以强制 iOS 8 下载/安装它。安装后,它会正确替换现有副本。
I believe there are 2 problems going on here. If the .plist on the https website pointing to the enterprise certificate signed .ipa file has a bundle-identifier matching an application that's already installed, it won't overwrite it. The bundle-version is different on all our .plist files, so it should install it anyway. iOS 7 doesn't seem to have this issue. We plan to work around this issue by messing up the bundle-identifier in the plist so it's always unique to the build.
我相信这里有两个问题。如果 https 网站上指向企业证书签名的 .ipa 文件的 .plist 具有与已安装的应用程序匹配的捆绑标识符,则不会覆盖它。我们所有的 .plist 文件的 bundle-version 都不同,所以无论如何都应该安装它。iOS 7 似乎没有这个问题。我们计划通过弄乱 plist 中的 bundle-identifier 来解决这个问题,这样它对于构建来说总是唯一的。
The second issue is that when it is successfully installing the application, it doesn't switch to the home screen or indicate it's doing anything at all. In iOS 7, after selecting the "Install" button at the prompt, would switch to the Home screen where the icon would be dark, and a progress indicator would show downloading progress. Then the application would have a blue dot next to it indicating it was new. With iOS 8, it doesn't switch to the Home screen so it appears to be not working. You can manually go to the home screen, and you should see a dark icon with a progress indicator (now at a new location, because it doesn't know it will be replacing an existing application). After it downloads/installs successfully, it doesn't place the blue dot on the replaced application.
第二个问题是,当它成功安装应用程序时,它不会切换到主屏幕或指示它根本没有做任何事情。在 iOS 7 中,在提示处选择“安装”按钮后,将切换到主屏幕,该屏幕的图标将变暗,并且进度指示器将显示下载进度。然后应用程序旁边会有一个蓝点,表示它是新的。在 iOS 8 中,它不会切换到主屏幕,因此它似乎无法正常工作。您可以手动转到主屏幕,您应该会看到一个带有进度指示器的黑色图标(现在位于新位置,因为它不知道它将替换现有应用程序)。成功下载/安装后,它不会在替换的应用程序上放置蓝点。
Hope this helps.
希望这可以帮助。
回答by JanB
This caused me huge pain. I needed to install a new app OTA on just employee phones outside of an MDM solution. I seemed to try every possible solution I could find on the internet and nothing worked. The closest I could get was for the app to get to the ‘loading' stage. My solution has taken a week of work, trying different things. I'm not sure which worked in which order and which would have worked anyway, but here's what I did:
这给我带来了巨大的痛苦。我需要在 MDM 解决方案之外的员工手机上安装一个新的应用程序 OTA。我似乎尝试了在互联网上找到的所有可能的解决方案,但没有任何效果。我能得到的最接近的是应用程序进入“加载”阶段。我的解决方案花了一周的时间尝试不同的东西。我不确定哪个按哪个顺序起作用,哪个会起作用,但这是我所做的:
In my case, I had previously built this app with a provisioning profile from a developer (as opposed to an Enterprise) account. In Xcode, I changed the Bundle Identifier to give it a new name, for example, it was originally com.mydomain.myapp and became com.mydomain.mysuperapp.
就我而言,我之前使用来自开发人员(而不是企业)帐户的配置文件构建了此应用程序。在 Xcode 中,我更改了 Bundle Identifier 以给它一个新名称,例如,它最初是 com.mydomain.myapp,变成了 com.mydomain.mysuperapp。
Ensured code signing in the app was valid and included the distribution certificate for the Enterprise account
确保应用程序中的代码签名有效并包含企业帐户的分发证书
I had used the wrong provisioning profile (one with no identities associated) so, because I chose ‘automatic' it built fine but was never going to install. So, I changed code signing for Release to my distribution profile (rather than development profile)
我使用了错误的配置文件(一个没有关联身份的配置文件)所以,因为我选择了“自动”,它构建得很好,但永远不会安装。因此,我将 Release 的代码签名更改为我的分发配置文件(而不是开发配置文件)
Made sure the app was set with a deployment target low enough for the devices that will download it
确保应用程序的部署目标设置得足够低,以供下载它的设备使用
Archived the file & exported for Enterprise deployment
存档文件并导出用于企业部署
Manifest must contain the 57x57 png and the 512x512 png image otherwise the install doesn't get past the ‘waiting' stage
清单必须包含 57x57 png 和 512x512 png 图像,否则安装不会通过“等待”阶段
I created an index.html file that looked like this:
我创建了一个 index.html 文件,如下所示:
<html>
<body>
<a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/dw80wahlwupkyd5/MyApp.plist">
Install Learning Chunks App from Dropbox</a>
</body>
</html>
I had used a plist sample that I found online and it included some optional settings. When I left these in, the download didn't work. I took those out. My manifest plist file was named: MyApp.plist and looked like this:
我使用了我在网上找到的 plist 示例,其中包含一些可选设置。当我把这些留在里面时,下载不起作用。我把那些拿出来了。我的清单 plist 文件被命名为:MyApp.plist,看起来像这样:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://dl.dropboxusercontent.com/s/r1bljbkcows7sje/mysuperapp.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string> https://dl.dropboxusercontent.com/s/ujk9ipcv2naltut/logo57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://dl.dropboxusercontent.com/s/gpebomok83mp9d5/logo512.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.mydomain.mysuperapp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>My Super App</string>
<key>subtitle</key>
<string>My Super App</string>
</dict>
</dict>
</array>
</dict>
</plist>
I uploaded the MyApp.plist, index.html, logo57.png, logo512.png and MyApp.ipa to DropBox. I shared the index.html with those who need to download the app.
我将 MyApp.plist、index.html、logo57.png、logo512.png 和 MyApp.ipa 上传到 DropBox。我与需要下载该应用程序的人共享了 index.html。
The user can then click on the shared link in the email and the app should install.
然后,用户可以单击电子邮件中的共享链接,然后安装该应用程序。
回答by eremzeit
EDIT: The issue below is a red herring. As Dylan Hand mentioned above, the problem for me was that I had broken image links in the manifest file. Apparently this didn't matter for ios7 but ios8 won't finish the install if this is true. When I removed those reference, it worked perfectly.
编辑:下面的问题是一个红鲱鱼。正如 Dylan Hand 上面提到的,我的问题是我在清单文件中损坏了图像链接。显然,这对 ios7 来说无关紧要,但如果这是真的,ios8 将无法完成安装。当我删除这些参考时,它工作得很好。
I have the same set of symptoms as OP (ie. "Unable to download app" message but only on iOS 8). When I try to validate (ie Organizer -> Validate), I receive the following message.
我有与 OP 相同的一组症状(即“无法下载应用程序”消息,但仅限于 iOS 8)。当我尝试验证(即 Organizer -> Validate)时,我收到以下消息。
This led me to this post: https://stackoverflow.com/a/25757196/751136
这让我看到了这篇文章:https: //stackoverflow.com/a/25757196/751136
It claims that re-generating your provisioning profiles should result in a new entitlement called beta-reports-active
. When I try to do this on in my enterprise account, the new profiles DO NOT have the new entitlement. However, when I regenerate provisioning profiles in another non-enterprise account, the new profiles DO have that field.
它声称重新生成您的配置文件应该会产生一个名为beta-reports-active
. 当我尝试在我的企业帐户中执行此操作时,新配置文件没有新权限。但是,当我在另一个非企业帐户中重新生成配置文件时,新的配置文件确实具有该字段。
回答by James Moore
If you build your iOS apps with a build script and you were previously using PackageApplication with the --sign flag then that may be causing problems. The --sign flag doesn't work any longer when building on 10.10 and removing it got all of our iOS apps installing again.
如果您使用构建脚本构建 iOS 应用程序,并且您之前使用的是带有 --sign 标志的 PackageApplication,那么这可能会导致问题。--sign 标志在 10.10 上构建时不再起作用,删除它会再次安装我们所有的 iOS 应用程序。
回答by thomas
This issue drove me crazy, Only this helped for Enterprise Distribution: Perform all the required build settings and click on “Archive”. Perform the Enterprise Distribution Process. You will be shown Organizer window. On Mac machine locate the .xcacrchive file by selecting KRelease and choosing “Show in finder”.
这个问题让我发疯,只有这对企业分发有帮助:执行所有必需的构建设置并单击“存档”。执行企业分发流程。您将看到管理器窗口。在 Mac 机器上,通过选择 KRelease 并选择“Show in finder”来找到 .xcacrchive 文件。
User is navigated to the folder where the .xcarchive file is located. Right-click the .xcarchive file and select “Show Package Contents” option.
用户被导航到 .xcarchive 文件所在的文件夹。右键单击 .xcarchive 文件并选择“显示包内容”选项。
In the opened finder window go to Products/Applications Select and copy the .app file
在打开的 finder 窗口中,转到 Products/Applications 选择并复制 .app 文件
Create a new folder somewhere on your disk with the name “Payload” Note: The folder name is case-sensitive. Paste the copied .app file into “Payload” folder. Compress the Payload folder to get Payload.zip file Rename the Payload.zip file to .ipa and bundle it with your .plist Done !!! the .ipa file is ready to be installed on the devices registered in the provisioning profile used in the .xcarchive generation.
在磁盘上的某处创建一个名为“Payload”的新文件夹 注意:文件夹名称区分大小写。将复制的 .app 文件粘贴到“Payload”文件夹中。压缩 Payload 文件夹以获取 Payload.zip 文件将 Payload.zip 文件重命名为 .ipa 并将其与您的 .plist 捆绑 完成!!!.ipa 文件已准备好安装在 .xcarchive 生成中使用的配置文件中注册的设备上。