问题
When attempting to export a couple of my iOS apps for Enterprise Distribution, I'm having an issue where the organizer is showing "0 Entitlements" for my App and not choosing a provisioning profile.
This does not cause any errors when creating the .IPA file. However, after I place the .ipa and .plist on my site, the app will not successfully install. When I try to install, it starts showing the progress indicator on the app icon while "Loading..." but then it disappears and I get the generic message:
Unable to Download App - "My app name" could not be installed at this time.
with an option to Retry.
I do not have this issue with a couple of my other apps, which show 4 entitlements and the provisioning profile in the organizer. The production provisioning profile is a "company wildcard" so it has the structure com.mycompanyname.*
I have confirmed that the App ID of both the working and non-working code follows the exact same structure. The working apps seem to automatically pick up the profile after I select my development team used for provisioning, seen here in one of the working apps:
Even if I specifically select my production distribution provisioning profile in the Build Settings of the target, the provisioning profile is not included when trying to distribute my app.
Trying to troubleshoot the problem, I've tried all the steps listed in the answer here, as well as a few of the workarounds in some of the non-accepted answers: iOS 8 - Can't Install Enterprise App. For reference without having to click through;
- Fix 1: I don't include images in the manifest so I know that they're not incorrect.
- Fix 2: The problem app is only a few months old and I'm testing on a device that has had iOS 8 since the day it came out.
- Fix 3: I have confirmed that my provisioning profile is active
- Fix 4: I do not get the
Verification Stage Failed
error in the console - Other: Tried creating my .ipa manually from the steps @thomas's answer
- Other: I do not get the duplicate bundleID error in the console
- Other: I've tried setting my "Team" on the General tab of my Target to both my actual development account, and to "None"
I'm at my wit's end trying to figure out why my Entitlements don't show up in the first place in the organizer, so any suggestions are highly welcome. Below I've put what I believe is the relevant log from my device's console when it fails to install my application (somewhat redacted):
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
回答1:
Much like the SSL change not long ago that blind sided us, in Xcode 6, I can confirm from re-reading the documentation, and then calling apple support to verify. You can no longer distribute enterprise apps with a wild card App ID. Look for a tell tale XC: com.company.* in your provisioning profiles.
As per apple, whos tech made a minimal test app while I was holding, and my own minimal test case, you can create new explicit App ID's and edit your existing provisioning profiles to use them. Thus having the least effect on existing installations. It was not confirmed weather one can revert to Xcode 5 to archive after using that bundle ID in xCode 6. I hope this info helps other enterprise devs. https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/DistributingEnterpriseProgramApps/DistributingEnterpriseProgramApps.html.
回答2:
I found a solution to the problem, and that was to create explicit App IDs for all apps. I don't know if there is a new issue with using wildcard App IDs for production applications, but when I created explicit IDs (and a Provisioning Profile for each explicit ID) I am no longer experiencing the issue.
Still not sure why the wildcard provisioning profile is picked up by some of my apps but not by others, but at least a solution is available.
来源:https://stackoverflow.com/questions/28034654/0-entitlements-when-exporting-app-for-enterprise-distribution