2012-10-03 16 views
31

Necesitamos probar nuestra aplicación en el contexto de una actualización de iOS (por ejemplo, 5.1 -> 6.0). Desafortunadamente, Apple no permite la degradación de dispositivos. Pensamos hacerlo en el simulador, pero las diferentes versiones del simulador son entornos diferentes en sí mismos. Creo que podemos copiar el paquete de un simulador a otro, pero eso no migrará el llavero (¿o sí?).¿Cómo simular la actualización de la versión de iOS?

Gracias!

+1

¿Qué quieres probar con esto? Probar la aplicación por separado en 5.1 y en 6.0 debería ser suficiente. La aplicación no puede ejecutarse cuando el sistema se está actualizando. – Sulthan

+3

En realidad, hay formas de degradar su sistema operativo: busque un paraguas pequeño, p. http://www.idownloadblog.com/2012/05/25/save-your-shsh-blobs-5-1-1/ – Till

+1

Sulthan, ah, lo diferente entre la teoría y la práctica ... creemos que hay algo de lógica en nuestra aplicación que se rompe en la transición y deja algunos de los datos de la aplicación en un estado inconsistente. Hasta que, gracias, lo intentaremos, si encontramos algún dispositivo que aún no hayamos actualizado a iOS 6.0. Aún así, sería más fácil a través del simulador. –

Respuesta

5

Por ahora, aún puede instalar iOS 8.2. Cuando se lanza una nueva versión, Apple deja ambas versiones abiertas para su instalación por un corto tiempo. Mientras esa "ventana de firma" está abierta, puede actualizar un dispositivo, probar y luego restaurarlo desde una imagen de la versión anterior. Por lo tanto, podría hacer algunas pruebas intensivas mientras la ventana esté abierta, pero obviamente esa no es una solución a largo plazo (por lo general, solo dura unos pocos días).

Si tiene el presupuesto para ello, puede instalar 8.2 en un dispositivo, ponerle una pegatina grande que diga "no actualizar" y mantenerlo en 8.2 mientras sea relevante. Instale su aplicación en ese dispositivo y realice una copia de seguridad (con cifrado de respaldo habilitado para incluir las entradas de llavero) y luego restaure esa copia de seguridad a otro dispositivo que esté en 8.3; este es básicamente el mismo procedimiento que realizará cuando realice una actualización/restaurar a través de iTunes por lo que debe ser bastante cerca. No será exactamente lo mismo que una actualización de OTA en el dispositivo, por supuesto, pero para eso, consulte la opción 1 arriba (y vea pronto).

11

Para probar la transición de un estado (antes) a otro (después), necesita una forma de poner la aplicación en el estado anterior.

su aplicación seguramente no va a correr mientras se actualiza el sistema operativo, por lo que en realidad sólo tiene que preocuparse acerca de la aplicación de la puesta en marcha y el descubrimiento de que el sistema operativo se ha actualizado. Hay un par de opciones:

  • copiar todos los archivos de datos de la aplicación de un dispositivo que ejecuta la versión "antigua" IOS (5.1 de acuerdo a su pregunta) a un dispositivo que ejecuta el nuevo (6.0) versión. El organizador en Xcode le permitirá copiar fácilmente el "contenedor" de su aplicación de un dispositivo a su Mac o viceversa.

  • Haga que su aplicación escriba sus datos en el formato "antiguo". No es raro que una aplicación tenga métodos para leer y escribir datos en diferentes formatos según el entorno, por lo que a menudo es más fácil hacer que su aplicación escriba datos en el formato anterior que copiar desde un dispositivo anterior.

Sea cual sea el camino que elija, pensar en cualquier otro lugar (como valores predeterminados del usuario) donde es posible que los cambios hechos dependientes de la versión del sistema operativo y establecer de nuevo a los valores que corresponden al sistema operativo anterior. Esto se aplica especialmente a los artículos de llavero, que no están almacenados en la caja de arena de su aplicación.

marcos Unidad de prueba (como marco XCTest de Apple) generalmente tienen un mecanismo de instalación que se puede utilizar para restablecer su aplicación al estado antes, incluyendo la copia de archivos, agregar y quitar elementos llavero, la configuración de ajustes artículos, etc. luego puede agregar pruebas unitarias que ejecuten el código que pueda estar involucrado en una actualización y probar los resultados. Con un conjunto de pruebas fácilmente repetibles, podrá depurar cualquier problema más fácilmente.

Sin importar cómo lo aborde, el objetivo es poner la aplicación en el mismo estado en que se encontraría si se ejecutara por primera vez después de que ocurriera una actualización del sistema operativo.No tiene que preocuparse por simular la actualización real del sistema operativo, solo necesita engañar a la aplicación para que piense que la actualización acaba de suceder.

+1

¿Esto cubre las entradas de llavero (el punto principal de la pregunta que pensé)? – CupawnTae

+0

@CupawnTae La idea de * poner la aplicación en el estado anterior * ciertamente se aplica a los elementos de llavero, pero como el llavero es (lo único) que persiste fuera de la zona de pruebas de la aplicación, necesitarás escribir código para hacerlo. Gracias por señalarlo: voy a editar para abordar el llavero específicamente. – Caleb

Cuestiones relacionadas