program - iOS9: "No se puede descargar la aplicación"
how to distribute ios app without app store (7)
Estamos desarrollando una aplicación interna de iOS para nuestra empresa. Creamos un enlace de distribución local del formulario.
itms-services://?action=download-manifest&url=https://INTERNAL-PATH/manifest.plist
Funcionó bien durante mucho tiempo, incluyendo iOS8 y todas las betas de iOS9.
Sin embargo, ahora, para cada dispositivo actualizado al iOS9 oficial, al intentar instalar desde el enlace anterior, obtenemos este cuadro de diálogo:
He capturado el registro desde que presioné "instalar" hasta que obtuve este error. se muestra aquí. Desde el principio hay un "ios8fix" sospechoso que no colocamos, y una de las salidas de falla es la afirmación de BundleValidator: FalledIdentifier: MY_APP_ID.ios8fix no coincide con el bundleIdentifier esperado: MY_APP_ID
Tenga en cuenta que "crear un nuevo perfil de aprovisionamiento" no es una buena solución, porque estoy tratando de distribuir una actualización sobre una aplicación existente.
¡Ya he quemado un día de tontos (ok, todo el día) tratando de resolver esto, y agradecería cualquier pista aquí!
itunesstored[123] <W>: LoadExternalDownloadManifestOperation: Canceling failed manifest download for replace: MY_APP_ID.ios8fix
itunesstored[123] <W>: [Download]: Adding download(s): -4949958484440492382
itunesstored[123] <W>: LaunchServices: installing placeholder for <LSApplicationProxy: 0x148840860> MY_APP_ID.ios8fix <(null) *Not found in database*>
installd[47] <N>: 0x16e087000 -[MIClientConnection installPath:withOptions:completion:]: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-4949958484440492382.app" type Placeholder requested by itunesstored (pid 123)
installd[47] <N>: 0x16e12f000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=MY_APP_ID.ios8fix; Version=8.38.5, ShortVersion=(null)>
installd[47] <N>: 0x16e12f000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Data/Application/A64E6947-B7E7-46A9-B517-4887AB890E97
installd[47] <N>: 0x16e12f000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553
itunesstored[123] <W>: [Download]: Starting task: 4 with priority: 300 for download: -4949958484440492382 bundleIdentifier: MY_APP_ID.ios8fix in session: com.apple.itunesstored.default
installd[47] <N>: 0x16e12f000 -[MIInstaller performInstallationWithError:]: Install Successful; Staging: 0.00s; Waiting: 0.00s; Preflight/Patch: 0.00s, Verifying: 0.00s; Overall: 0.12s
itunesstored[123] <W>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x148ac35f0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app> withPhase:3
itunesstored[123] <W>: LaunchServices: installPhaseFinishedForProgress: MY_APP_ID.ios8fix.InstallingPlaceholder - <NSProgress: 0x148a7a8c0> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 100 called, removing progress from cache
lsd[175] <W>: LaunchServices: Updating installPhase for parent <NSProgress: 0x127d3a430> : Parent: 0x0 / Fraction completed: 0.6000 / Completed: 60 of 100 to 3
ondemandd[192] <E>: Application with ID: MY_APP_ID.ios8fix was installed, but it doesn''t appear to have a bundle URL, we are taking no action on this.
itunesstored[123] <W>: LaunchServices: updating placeholder for <LSApplicationProxy: 0x146eb9100> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app> with icons
installd[47] <N>: 0x16e12f000 -[MIClientConnection installPath:withOptions:completion:]: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-4949958484440492382.app" type Placeholder requested by itunesstored (pid 123)
installd[47] <N>: 0x16e2d3000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=MY_APP_ID.ios8fix; Version=8.38.5, ShortVersion=(null)>
installd[47] <N>: 0x16e2d3000 -[MIInstallableBundle _refreshUUIDForContainer:withError:]: Data container for MY_APP_ID.ios8fix is now at /private/var/mobile/Containers/Data/Application/20871483-6F78-424D-8ED1-BA18BD2959BA
installd[47] <N>: 0x16e2d3000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA
installd[47] <N>: 0x16e2d3000 -[MIInstaller performInstallationWithError:]: Install Successful; Staging: 0.00s; Waiting: 0.00s; Preflight/Patch: 0.00s, Verifying: 0.00s; Overall: 0.06s
ondemandd[192] <E>: Application with ID: MY_APP_ID.ios8fix was installed, but it doesn''t appear to have a bundle URL, we are taking no action on this.
SpringBoard[54] <W>: FBApplicationPlaceholder We received a nil BSCFBundle back, which means _CFBundleCreateUnique. Here''s what -[NSFileManager attributesOfItemAtPath:error:] is giving us: (null)
here''s the error we got back (if any): Error Domain=NSCocoaErrorDomain Code=260 "The file “-4949958484440492382.app” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app, NSUnderlyingError=0x12a552020 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
SpringBoard[54] <W>: -[FBBundleInfo _initWithBundleURL:] ERROR: Unable to create bundle at path: /private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app
ondemandd[192] <E>: An object with ID [0x12de8a220 <x-coredata:///AssetDownloads/tAC876614-AA9B-432E-9691-02EE36693D1013>] has already registered.
itunesstored[123] <W>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x148a553a0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app> withPhase:0
lsd[175] <W>: LaunchServices: Updating installPhase for parent <NSProgress: 0x127d3a430> : Parent: 0x0 / Fraction completed: 0.6000 / Completed: 60 of 100 to 0
<-- 19 seconds gap -->
itunesstored[123] <W>: [Download]: Download task did finish: 4 for download: -4949958484440492382
itunesstored[123] <W>: [ApplicationWorkspace] Installing download: -4949958484440492382 with step(s): Install
itunesstored[123] <W>: [ApplicationWorkspace]: Installing software package with bundleID: MY_APP_ID.ios8fix: bundleVersion: 8.38.5 path: /var/mobile/Media/Downloads/-4949958484440492382/-5671360055536325805
itunesstored[123] <W>: BundleValidator: Failed bundleIdentifier: MY_APP_ID.ios8fix does not match expected bundleIdentifier: MY_APP_ID
itunesstored[123] <W>: [ApplicationWorkspace]: Bundle validated for bundleIdentifier: MY_APP_ID.ios8fix success: 0
itunesstored[123] <W>: LaunchServices: Uninstalling placeholder for app <LSApplicationProxy: 0x14884ffc0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app>
itunesstored[123] <W>: LaunchServices: Uninstalling app <LSApplicationProxy: 0x14884ffc0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app>
installd[47] <N>: 0x16e087000 -[MIClientConnection uninstallIdentifiers:withOptions:completion:]: Uninstall requested by itunesstored (pid 123) with options: {
}
installd[47] <N>: 0x16e087000 -[MIUninstaller _uninstallBundleWithIdentifier:error:]: Uninstalling identifier MY_APP_ID.ios8fix
installd[47] <N>: 0x16e087000 -[MIUninstallNotifier performRemovalWithCompletionBlock:]: Destroying container with identifier MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA
installd[47] <N>: 0x16e087000 -[MIUninstallNotifier performRemovalWithCompletionBlock:]: Destroying container with identifier MY_APP_ID.ios8fix at /private/var/mobile/Containers/Data/Application/20871483-6F78-424D-8ED1-BA18BD2959BA
itunesstored[123] <W>: LaunchServies: No app bundle to remove for MY_APP_ID.ios8fix
lsd[175] <W>: LaunchServices: Updating identifier store
itunesstored[123] <W>: LaunchServices: clearing created progress for MY_APP_ID.ios8fix
itunesstored[123] <W>: [ApplicationWorkspace]: Uninstalling application placeholder for bundleIdentifier: MY_APP_ID.ios8fix; success: 1
itunesstored[123] <W>: [ApplicationWorkspace]: Failed to install application: MY_APP_ID.ios8fix; /var/mobile/Media/Downloads/-4949958484440492382/-5671360055536325805; Error Domain=SSErrorDomain Code=143 "(null)"
itunesstored[123] <W>: [ApplicationWorkspace] Install complete for download: -4949958484440492382 result: Failed
itunesstored[123] <W>: [Download]: Fail download: -4949958484440492382 after error: Error Domain=SSErrorDomain Code=143 "(null)"
Anteriormente, he cambiado el nombre de ipa y el identificador del paquete para descargar en iOS 8.2. Ahora en ios 9 solo usamos el nombre de ipa original y el nombre del identificador del paquete anterior. Funciona.
Echa un vistazo a su lista de manifiestos.
Me encontré con el mismo problema y lo arreglé durante la lucha de los tres días. Para dispositivos iOS8, tienes que usar plist antiguo. Para las devides de iOS9, tienes que usar una lista nueva (hecha con Xcode7). Este es el estándar. El archivo ipa es el mismo (Xcode7 Archive build).
Nuevo plist requiere dos imágenes de instalación. 57x57.jpg y 512x512.jpg. Tienes que arreglarlos también. El identificador de paquete debe ser correcto (igual que Xcode7> OBJETIVOS> General> Identificador de paquete).
He probado 4 dispositivos.
iPad Air (iOS9.0.1) -> OK (por iOS9 plist)
iPad 3 (iOS8.4.1) -> OK (por iOS8 plist)
iPad 2 (iOS9.0) -> OK (por iOS9 plist)
iPad mini (iOS9.0) -> OK (por iOS8 plist)
El proceso de instalación de OTA hace que su dispositivo sea confuso. En esta situación, reiniciar es útil. Espero eso ayude.
Esto parece ser un error en iOS9, donde almacena cualquier error OTA anterior.
Logré que mis instalaciones volvieran a funcionar utilizando una combinación de eliminación de la aplicación en el dispositivo, cambiando el archivo manifest.plist
y luego reiniciando el dispositivo. Esto pareció borrar el caché y se instaló la aplicación.
Mi problema se solucionó después de agregar las nuevas propiedades de imagen display-image y full-size-image al archivo .plist:
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>linktoyouripa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>someimage.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>someimage.png</string>
</dict>
Se resolvió el mismo problema, con un reinicio del dispositivo.
Los pasos:
Eliminar la aplicación anterior
Reiniciar el dispositivo
Instala la nueva aplicacion
Tuve el mismo problema, pero en mi caso el nombre de la aplicación tenía un espacio y al eliminar el espacio todo estaba bien.
MY_APP_ID.ios8fix
Tu identificador de paquete debe estar correcto ahora.
Esto se hizo como una solución, para un viejo problema en 8.2. También tenía algunas de estas extensiones ''ios8fix'' en mis aplicaciones, lo que rompió la OTA para 9.0 GM. Sí, funcionó a través de todas las betas.
Así que revise su manifiesto.plist para asegurarse de que realmente coincida con su ID de aplicación real ... corrija esa entrada completa.
Por cierto, puedes actualizar esa lista fácilmente con cualquier editor de texto.
Mis puntos de entrada de itms a un plist También sirvo en mi compañía, aquí está el plist antiguo.
<?xml version="1.0" encoding="UTF-8"?>
<!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>http://removed.cachefly.net/noname.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>dupuy.robert.APPNAME.ios82fix</string>
<key>bundle-version</key>
<string>1.0.7</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Appname 1.0.7</string>
</dict>
</dict>
</array>
</dict>
</plist>
Ver el identificador de paquete? dupuy.robert.APPNAME.ios82fix es falso! Eso se agregó como una solución para un problema anterior de Apple.
Pero a partir de GM 9.0, ese identificador de paquete debe ser estrictamente correcto.
Entonces, corrija su lista o señale una nueva lista correcta. Estas listas son solo archivos simples ... ¡debería ser una solución fácil! En mi caso, "dupuy.robert.APPNAME.ios82fix" acaba de cambiarse a "dupuy.robert.APPNAME" y se volvió a guardar el plist. Aunque si el servidor web almacena en caché, ese es otro dolor de cabeza si continúa sirviendo al anterior, si puede cambiar el nombre del archivo, tanto mejor.