Ad-hoc distribution fail - ios

I work for a big company, and I'm developing an iOS app for iOS 5+. The only way the app will be distributed will be through ad-hoc deployment.
I have had my own server for some time, hosted by o2switch (french hoster). As I started the development, we used it to deploy the app for beta testing purposes. It was working pretty well.
As the app entered its final phase, the company bought the same (in fact, they only have a single one) plan at o2switch (as it was working fine on my server). The "new" server works fine, we have the files required by the iOS app on it and we access them correctly.
My problem is that when I deploy over to the company's server, the install keeps crashing ! The bar below the app's icon is empty, the almost full (in no time), and I get an error saying the app could not be installed. (classic)
I have the so-well-known crash log :
unknown itunesstored[1657] <Notice>: MS:Notice: Installing: com.apple.itunesstored [itunesstored] (690.10)
unknown wifid[23] <Error>: WiFi:[375199765.346102]: Client itunesstored is background application
unknown securityd[1659] <Notice>: MS:Notice: Installing: (null) [securityd] (690.10)
unknown SpringBoard[62] <Warning>: could not save thumbnail for downloading icon: image=(null) path='/var/mobile/Library/SpringBoard/DownloadingIconImageCache/***********'
unknown sandboxd[1661] <Notice>: MS:Notice: Installing: (null) [sandboxd] (690.10)
unknown installd[1663] <Notice>: MS:Notice: Installing: (null) [installd] (690.10)
unknown SpringBoard[62] <Warning>: could not save thumbnail for downloading icon: image=(null) path='/var/mobile/Library/SpringBoard/DownloadingIconImageCache/***********'
unknown keybagd[1665] <Notice>: MS:Notice: Installing: (null) [keybagd] (690.10)
unknown securityd[1667] <Notice>: MS:Notice: Installing: (null) [securityd] (690.10)
unknown SpringBoard[62] <Warning>: Killing *********** for app installation
unknown installd[1663] <Error>: 2ffc1000 extract_package: Could not extract archive
unknown installd[1663] <Error>: 2ffc1000 stage_package: Could not extract /var/tmp/install_staging.I0rwBH/foo.zip to /var/tmp/install_staging.I0rwBH/foo_extracted
unknown com.apple.itunesstored[1657] <Notice>: MobileInstallationInstall: failed with -1
unknown installd[1663] <Error>: 2ffc1000 MobileInstallationInstall: Could not stage the package
unknown installd[1663] <Error>: 2ffc1000 handle_install: API failed
unknown installd[1663] <Error>: 2ffc1000 send_message: failed to send mach message of 71 bytes: 10000003
unknown installd[1663] <Error>: 2ffc1000 send_error: Could not send error response to client
I've tried a lot to get rid of this error, but nothing seemed to work. I've read every single answer on SO talking about this issue, and tried everything I could. I re-downloaded the profiles, updated the build number, checked the ipa's url, and so many other things.. Nothing worked.
I had to deliver the app quickly, so I tried one last thing : put it on my server. And it worked perfectly. First try, and with no problem (maybe one, the bar did not load progressively but stayed grey then filled in blue very quick, but that's not a problem, I know it downloaded the online version). Then I re-tried uploading to the new server, same problem.
BTW, I tested with: iPhone4/iOS5, iPhone4S/iOS6, iPhone5/iOS6, iPad3/iOS6 and a couple other devices, over 3G (3 different providers) and Wifi, same problem every single time.
So, my question is the following :
Does / how can the server impact the ad-hoc deployment ?
I can give information on the server's config if required. Please tell me what info you need.
O2switch is investigating, but they don't know much about iOS ad-hoc deployment, so they don't really know where to look, what service the install calls, etc.
So I'm turning (once again) to you, SO's community ! Any ideas ?

Check the mime-type configuration in the web-server. You need:
application/xml for the .plist file, and
application/octet-stream for the .ipa file.

Did you edit the App.plist file before you moved it to the new server?
The assets url must be absolute, like this: <string>http://someurl.com/App-1.0.0.ipa</string>.

If you are absolutely sure that server returns proper mime types, checked by:
lynx -mime_header http://www.serveraddress/App.plist | head -10
If you are sure that you don't have spaces or new lines in link to your .plist file in your html file.
If you are sure that you have added devices to provisioning profile
And if you have read: http://www.informit.com/articles/article.aspx?p=1829415&seqNum=16
I have all files: .plist, .html, .ipa in the same folder
Then I don't know what is the issue and would suggest you to distribute it from your working server.

Related

react-native app fail to start after a few days

I'm gonna try to explain the problem as clearly as possible, here are the steps:
I compile the app on the device (width bundled file on disk - Options 2)
The app starts, and work
After a few days, when i click on the app's icon, it open the 'powered by react-native' screen, then it crash
I had the same problem over multiple devices, and multiple times
I'm pretty sure it is not a JS error, since nothings change between the day it work, and the day it doesnt
here's the app logs on app start:
$ cat crachReport|grep MyApp
Aug 29 14:26:47 Abels-iPhone amfid[1524] <Notice>: /private/var/containers/Bundle/Application/BDC567B0-B341-4B9A-8329-90B5CEC26440/MyApp.app/MyApp not valid: 0xe8008015: A valid provisioning profile for this executable was not found.
Aug 29 14:26:47 Abels-iPhone SpringBoard(BaseBoard)[1682] <Error>: Unable to get pid for 'UIKitApplication:org.reactjs.native.example.MyApp[0x9347]': No such process (err 3)
Aug 29 14:26:47 Abels-iPhone SpringBoard(FrontBoard)[1682] <Error>: Bootstrapping failed for <FBApplicationProcess: 0x1705f9500; org.reactjs.native.example.MyApp; pid: -1>
Aug 29 14:26:47 Abels-iPhone sharingd[62] <Notice>: SystemUI unknown identifier: 'org.reactjs.native.example.MyApp'
the unfound provisionning profile error does not appear on the logs when the app work, so i think it may come from here.
However i'm not sure since i'm new to ios developpement,
Thanks in advance
After compilation with a valid provisionning profile, this problem does not appear.
The default provisionning profile was valid for 7 days, so the error was coming from there.

What does the installation errror "The packet is unknown" mean?

I am trying to use Xcode 6.2 to install a development build of an iOS app onto my iPod touch (running iOS 8.2).
The installation keeps failing with the message
App instalation failed
The packet is unknown.
The console reports the following details:
Mar 27 12:53:52 iPod-touch com.apple.StreamingUnzipService[164] <Warning>: -[StreamingUnzipState finishStream]:476: Finishing an incomplete stream! This stream will not be resumable.
Mar 27 12:53:52 iPod-touch streaming_zip_conduit[163] <Warning>: __dispatch_source_read_socket_block_invoke_2:171: Failed to finish extraction: Error Domain=SZExtractorErrorDomain Code=3 "Finishing an incomplete stream! This stream will not be resumable." UserInfo=0x17e33b50 {SZExtractorFunctionNameErrorKey=-[StreamingUnzipState finishStream], SZExtractorSourceFileLineErrorKey=476, NSLocalizedDescription=Finishing an incomplete stream! This stream will not be resumable.}
Mar 27 12:53:52 iPod-touch streaming_zip_conduit[163] <Warning>: secure_send_message:105: Got error 1 from lockdown_send_message
Mar 27 12:53:52 iPod-touch streaming_zip_conduit[163] <Warning>: secure_send_error:137: Could not send error response to host
These messages seem to imply that the IPA file is somehow corrupted, and can't be extracted, but I had no problem unziping the IPA with Archive Utility on my Mac.
I also already ran codesign -dvvv on Payload/<my-app-name>.app and don't see any obvious problems with the certificate used to sign the app.
What does this error message indicate, and how can the issue be resolved?
note:
I already found this similar question but the only current answer does not help me. Since I have some, possibly relevant, details that may not apply to the previous question, I am asking a new question.
So I was getting this exact error and I tried switching USB ports (from the device plugged into the USB port on my keyboard to the USB port on my laptop) and now it works.

iOS8 Enterprise app install issue

I have been looking into this issue for a long time now and have gone over many questions on here which have helped clear up somethings but I am now getting some new warnings and errors in the device logs and I am unable to decipher them.
Firstly I was getting the following:
<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID:
which wouldn't even kick the install off but I followed the steps in the following link: iOS 8 - Can't Install Enterprise App made some changes to the bundle identifier and the manifest file and it would try and kick off the download.
However I am now getting the following errors/warnings and I am unsure what is causing them:
<Notice>: 0x101dcc000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=com.bundle-name; Version=3.0, ShortVersion=(null)>
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such process
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such file or directory
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such file or directory
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such file or directory
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such file or directory
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such file or directory
<Error>: 0x198de7310 Device-O-Matic: iterate_ancestors IORegistryEntryGetParentIterator failed: No such file or directory
as well as:
<Warning>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x13cf84870> com.bundle-name(Placeholder) withPhase:3
<Warning>: LaunchServices: installPhaseFinishedForProgress: com.bundle-name.InstallingPlaceholder - <NSProgress: 0x13e003120> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 100 called, removing progress from cache
and:
<Error>: Could not set socket option SO_OPPORTUNISTIC: Invalid argument
Any Help deciphering these and shedding some light would be greatly appreciated.
Update:
I went back and checked iOS 7.1.1 and it was failing to installing there so I switched the manifest file iPA url back to being ftp:// and it worked on 7.1.1 again but iOS8 throws the following warning and fails to download the app:
<Notice>: Invalid URL scheme for background tasks: ftp. Valid schemes are http or https
but switching the IPA url over to HTTPS means the app doesn't download for both iOS 7.1.1 or iOS 8.1
I found the solution to my problem and here is everything I did to get it working.
Our setup + backstory:
We have an AWS webserver with an HTTPS website running on it. Since iOS 7.1 our manifest (plist) is hosted on the server but the IPA was stored on an FTP and this worked fine throughout iOS 7. The introduction of iOS 8 meant the FTP could no longer be used for the IPA so we wanted to move it onto the webserver the same as the PLIST. Before doing this though we had other issues that were preventing the iPad from even trying to download because I was getting the following error message:
Ignore manifest download, already have bundleID: {bundle_id}
The Fix:
Firstly I followed the steps in this question and made sure that both full-size-image and display-image exist in the manifest file.
I then made some other changes to the manifest file based on another answer in this question. These changes were to the bundle-identifier and bundle-version
In doing this my iOS 8 test iPad would pick up the install display the shadow icon but then fail to install, however the iOS 7 iPad would still install I saw the following message:
<Notice>: Invalid URL scheme for background tasks: ftp. Valid schemes are http or https
Which led me to move all the files onto the webserver, but then both iOS 7 and iOS 8 wouldn't install.
I originally thought one of the above errors / warnings might have been causing it to fail but couldn't seem to find an answer. After hours of searching and trying to fix I had an epiphany because when trying to view the IPA in a web browser I was getting a 404 and I remembered we had a similar issue when moving the PLIST file onto the server. To fix this I had to add the IPA MIME type on the IIS 7 server. As soon as I did this my 7 build of our app will download an install on both the iOS 7 and iOS 8 iPads. The correct MIME type for an application/octet-stream

ios - Unable to download application but app installed correctly

I distribute my iOS App from HTTP server as enterprise distribution. When a user download App directly from web browser, the app installed correctly and no errors occur.
On the other hand, the app have a process for automatic updates. When user start application if a new version of the application on the server, be show a alert for starting download. If user accept, it begins download. During the installation process, the following message is displayed:
"Unable to download application"
but the application has been installed correctly. I use this code for download app:
NSURL *url = [NSURL URLWithString:serverUrlDownload];
[[UIApplication sharedApplication] openURL:url];
This occurs when user used iPhone 5s.
Showed following error in log:
<Warning>: Download url: itms-services://?action=download-manifest&url=http://server_update/ios/IOS_WF.plist
<Warning>: LaunchServices: installing placeholder for app10.IOS-WF
<Notice>: 0x1005a4000 handle_install_for_ls: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-6609911948116439539.app" requested by itunesstored
<Notice>: 0x1005a4000 MobileInstallationInstall_Server: Installing app app10.IOS-WF
<Notice>: 0x1005a4000 install_application: Installing parallel placeholder
<Notice>: 0x1005a4000 MobileInstallationInstall_Server: Staging: 0.00s; Waiting: 0.00s; Installation: 0.12s; LS Sync: 0.00s; Overall: 0.12s
<Warning>: No se ha obtenido ningĂșn flujo
<Warning>: LaunchServices: Creating installProgressForApplication:LSApplicationProxy: app10.IOS-WF (Placeholder) withPhase:0
<Warning>: LaunchServices: installation failed for app app10.IOS-WF
<Warning>: LaunchServices: installPhaseFinishedForProgress: app10.IOS-WF.Loading - <NSProgress: phase=Loading; state=Failed; fractionCompleted=1.000000> called, removing progress from cache
Reproduce Issue in iPhone 5s.
I couldn't reproduce error in iPhone 4s.
Any idea? Can be a problem of server configuration?
If you have not already done so, you might want to try to supply the app via https instead of http.
As of iOS 7.1, https is required for at least the manifest file, although there are some reports saying http would still work anyway.
The whole story with https being required came as a surprise to most devs and appears to have hickup at the same time. I can well imagine differences of the implementation of the process across different devices due to different OS builds, especially since there's 32 and 64 bit architectures now.
This is a wild guess, but it won't hurt to try. If you don't have a SSL capable server at hand, you might want to use dropbox as workaround, as has been explained here.

Testflight Ad-hoc distribution does not work if the GoogleMaps.bundle is added to the apps resources

I started to develop an iOS application that needs to use the Google Maps SDK. I followed the steps on the Google web page and added it successfully to the project. The problem is that now my testers cannot download the app via TestFlight, which is distributed with Ad-hoc provision profile and signing. There is an error at the last stage of the progress bar "Unable to download the application right now". -> Done, Retry. I do not know the exact message as it is not English for me. But the message is such small, and the meaning is correct.
The app runs well on the ios simulator, and also on my iphone device, with the working map display as well.
I went through the process now 4 times and finally I was able to identify which step causes this: the step to add the googleMaps.bundle to my resources inside the app. So if I remove the bundle from the list of Frameworks (keep the SDK itself) then the app is compilable, downloadable via TestFlight. If I put it back, it is not. Of course I have runtime crash if the bundle is missing, so I cannot do that.
When i open the console log in the Organizer it tell this:
Nov 26 09:42:17 -iPhone-keszuleke installd[1030] <Error>: 0x2ffe6000 MobileInstallationInstall_Server: Installing app hu.vivify.muzeumtura
Nov 26 09:42:18 -iPhone-keszuleke installd[1030] <Error>: Nov 26 09:42:18 SecTrustEvaluate [leaf CriticalExtensions IssuerCommonName]
Nov 26 09:42:18 -iPhone-keszuleke installd[1030] <Error>: 0x2ffe6000 verify_signer_identity: MISValidateSignatureAndCopyInfo failed for /var/tmp/install_staging.sFC3ox/foo_extracted/Payload/muzeumtura.app/muzeumtura: 0xe8008017
Nov 26 09:42:18 -iPhone-keszuleke installd[1030] <Error>: 0x2ffe6000 do_preflight_verification: Could not verify executable at /var/tmp/install_staging.sFC3ox/foo_extracted/Payload/muzeumtura.app
Nov 26 09:42:18 -iPhone-keszuleke itunesstored[72] <Error>: 0x1698000 MobileInstallationInstall: failed with -1
Nov 26 09:42:18 -iPhone-keszuleke installd[1030] <Error>: 0x2ffe6000 install_application: Could not preflight application install
Nov 26 09:42:18 -iPhone-keszuleke installd[1030] <Error>: 0x2ffe6000 handle_install: API failed
Then after a few more hours I have found the advice of trying the terminal for the codesign command. This gives a lot of missing resources in the googleMaps.bundle:
Desktop/Payload/muzeumtura.app: a sealed resource is missing or invalid
In architecture: armv7
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/._polyline_colors_texture.png
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/nl.lproj/._GMSCore.strings
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/._tr.lproj
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/de.lproj/._GMSCore.strings
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/el.lproj/._GMSCore.strings
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/._ru.lproj
resource missing: /Users/daz/Desktop/Payload/muzeumtura.app/GoogleMaps.bundle/GMSCoreResources.bundle/._ms.lproj
... and so on. It is strange that these files listed are all hidden (starting with ._) I do not know it this has any connection to the Testflight problem, or whether this issue in the terminal is critical or not (this is the first time to use the codesign command for me). But I guess so. Please help me find this out, as it must be something trivial, because the app is very simple and I am sure I am not the only one on this planet who wants to integrate the googleMaps SDK into the ios app.
Some more info:
I have XCode 5.0, OSX 10.8.4
I have enabled to show hidden files in Finder
I want to build for armv7
This is the issue with testflight, sometimes happened with me too. This is not particularly related with google maps, try other methods
Distribute ipa to client
OK, that was my fault. When the GoogleMaps.bundle was added to the project by the drag-n-drop, the bundle was on a disk with exFAT partition table! Who would have thought that this can be a reason? I am sad because one and half day of my life and the project had gone. But I am happy that now it works. Good advice: do not use exFAT for iPhone development!

Resources