Lista de verificación previa al lanzamiento antes de crear la versión final para App Store


¿Tienes curiosidad por saber qué prácticas han aprendido las personas antes de hacer su compilación final y enviarla a la App Store? Aparte de cambiar de Debug a Release y comentar llamadas a NSLog, ¿qué otras cosas básicas y/o no tan básicas deberíamos tener en cuenta?

Author: Eric Brotto, 2009-09-26

4 answers

Esta es una buena pregunta y me gustaría reiterar algunas de las respuestas y agregar algunas de las mías. He creado esta Wiki de la comunidad de answer, siéntete libre de agregarla.

  1. Elimine la aplicación de su dispositivo, apague WiFi, desactive los datos celulares, ahora instale y pruebe la aplicación. ¿Funciona correctamente (tanto como puede sin Internet)? ¿Al menos le dice al usuario que se requiere una conexión de red (si lo es) o se bloquea?

  2. Si usa CLLocationManager: Elimine el aplicación, instalación y ejecución fresca, pero no permita que la aplicación tenga datos de ubicación. ¿La aplicación se comporta bien o se bloquea? ¿Al menos le dice al usuario que no puede ejecutarse sin datos de ubicación (si eso es un requisito)? ¿Funciona en un iPod Touch que hace toda la ubicación geográfica utilizando solo WiFi?

  3. Ejecute la aplicación en el simulador y para cada controlador de vista realice los siguientes pasos: (a) Desde el menú del Simulador de iPhone seleccione "Hardware" > > "Simular advertencia de memoria", (b) ahora navegue alrededor de su aplicación a otros controladores de vista y ver si todo está funcionando, (c) repetir la prueba para otro controlador de vista.

  4. Si admite firmware anterior (es decir, iOS 3.1.3), instale su aplicación en un dispositivo que ejecute 3.1.3 y pruébelo allí (si no tiene uno, use el simulador 3.2).

  5. Inicie su aplicación mientras está en una llamada telefónica o cuando el Hotspot personal está activo. ¿Todos los diseños de pantalla son correctos (la barra de estado es de 40px de alto en lugar de 20)? Hizo la parte inferior 20px de la view get pushed off the screen or did it resize correctly?

  6. Acepte una llamada telefónica mientras está en su aplicación, ¿renuncia activa y se reanuda correctamente? ¿Los sonidos de tu aplicación dejan de reproducirse mientras estás en la llamada telefónica?

  7. Inicie su aplicación mientras reproduce música, ¿la música continúa reproduciéndose? ¿Sus sonidos se mezclan correctamente o desvanecen la música apropiadamente?

  8. Pruebe el rendimiento en dispositivos más lentos con RAM limitada, como: iPhone 3G (128MB RAM, 412Mhz CPU) o iPod Touch (1ª o 2ª generación).

  9. Ejecute el analizador estático Clang y corrija (o al menos comprenda) cada advertencia.

  10. Asegúrese de que NSZombiesEnabled NO esté en las variables de entorno (precaución: no está seguro de si esto sigue siendo un problema)

 31
Author: progrmr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-29 04:52:15

Algunas cosas:

Realmente recomiendo no crear una configuración de compilación llamada "Distribución" como especifica Apple, porque a menudo estoy creando compilaciones ad hoc para probadores beta. Creo dos configuraciones de compilación, una llamada Ad Hoc y otra llamada AppStore, por lo que no estoy confundido. La única diferencia entre los dos es la presencia de los Derechos.archivo plist para la compilación Ad Hoc. De esta manera puedo probar lo más de cerca posible lo que enviaré a Apple.

La mayoría los desarrolladores son optimistas. Por eso estamos trabajando los fines de semana para crear una app que sabemos que nos va a hacer millonarios. Sin embargo, antes de someterse, sea pesimista. Imagine todo lo que pueda salir mal, y vuelva a comprobarlo.

No asumas nada. No asumas que ese pequeño cambio que hiciste en la aplicación no afectará nada más. La ley de Murphy dice que ese pequeño cambio hará que tu aplicación se bloquee en todos los toques de iPod o algo así. Prueba, prueba, prueba minuciosamente entre la edición final del código y el envío de la Appstore. Si tiene que hacer un pequeño cambio, repita hasta que esté perfecto.

Recuerde que si la aplicación no se bloquea para el 99.9% de sus usuarios, entonces 1 de cada 1,000 descargas resultará en una revisión mordaz de 1 estrella.

Utilizo Clang static analyzer, Leaks y Asignaciones de Objetos durante el desarrollo, pero hago una ejecución adicional de estas herramientas antes del envío por si acaso.

Si no tiene un dispositivo anterior, obtenga uno, porque el funcionamiento 3GS es perceptiblemente mejor y usted puede pasar por alto algunas ediciones importantes del funcionamiento.

Pruebe su aplicación con las siguientes configuraciones cuando la red o la ubicación sean aplicables:

  • iPod Touch
  • iPhone 3G
  • iPhone 3GS
  • iPhone en modo avión
  • iPhone con Wi-Fi
  • iPhone con BORDE
  • Llame al teléfono mientras usa su aplicación
 17
Author: Chris Garrett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-27 00:31:10

En lugar de cambiar a Release, cambio a "Distribution". Es una copia de Release, pero así es como me enseñaron algunos documentos de Apple y Iphonedeveloppertips.

Puntos importantes:

Después de la compilación final, pero antes de apresurarte a comprimir tu aplicación, abre el paquete usando el Finder Mostrar contenido del paquete. Debido a algún error en el macOS, que me mordió en versiones anteriores a Snow Leopard (y puede que todavía esté allí), si comprime demasiado rápido (usando el Finder Comprimir o Archivar elemento de menú), algunos de los recursos aún no se han vaciado en el archivo. Cuando se muestra el contenido del paquete, el contenido se actualiza. La forma en que notaría este problema es que el tamaño de su aplicación comprimida sería entre una quinta a una décima o menos del tamaño esperado. Usted puede pensar a sí mismo, "hey, esa utilidad zip realmente hace un gran trabajo de compresión", pero ese no es el caso. Este problema ocurriría en este punto en lugar de durante las pruebas principalmente porque estás haciendo una compilación de "limpiar todo" y todos los recursos y contenidos del paquete de aplicaciones comienzan vacíos y luego se llenan con Xcode. Y por alguna razón, incluso después de que Xcode haya terminado de crear el archivo, el contenido todavía no está realmente allí, si comprime, pero estaría allí si los mirara (una especie de Heisenberg inverso). Cuidado.

Otra área en la que paso mucho tiempo es hacer una buena copia de seguridad de las fuentes, después de haber enviado todos los últimos cambios a SVN, creó una nueva rama y etiquetó el archivo. También me gusta que mi número de versión coincida con mi número de compilación/confirmación de SVN, por lo que siempre sé qué versión de SVN coincide con mi lanzamiento. Tengo esos dos números de versión en mi información.plist y puede ser arrastrado por el usuario de la aplicación cuando pulsa i para obtener información. Por ejemplo, una información actual.incluye:

<key>CFBundleShortVersionString</key>
<string>2.0a1</string>
<key>CFBundleVersion</key>
<string>346</string>

Hay diferentes ideas sobre cómo usar CFBundleVersion. Esta es mi manera. También es útil la utilidad de línea de comandos, agvtool .

Una vez que la aplicación se construye, después de comprimir por lo que en realidad no está haciendo ningún cambio a la versión comprimida, vaya a comprobar el archivo de la aplicación y asegúrese de que está firmado con el certificado de distribución correcta y no su adhoc uno. Aprender a usar la utilidad de línea de comandos, codesign, es útil para este tipo de comprobación y depuración. Al hacer la copia comprimida primero, se asegura de que no va a cambiar de ninguna manera la copia final que Xcode ha entregado usted y que subirá a itunesconnect, si todo se ve bien.

Otras cosas a recordar son el icono de la aplicación, los otros iconos y gráficos que necesita para la tienda iTunes store, la información.plist, y el hecho de que cuando la carga de la aplicación falla con un mensaje de error críptico, generalmente tiene que ver con una de estas piezas que falta en el archivo comprimido que está construyendo (aquellas piezas que pertenecen al paquete de la aplicación).

 8
Author: mahboudz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-26 06:04:13

Mira este documento de lista de verificación @ Github

Https://github.com/bapu/AppReleaseCheckList

 0
Author: Baidyanath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-20 16:40:22