2012-08-30 18 views
13

Estamos utilizando TestFlight para enviar pilotos de nuestra aplicación.Solo falla en Testflight

Hay una parte de la aplicación que se cuelga, y tuvimos muchos problemas para reproducir el bloqueo. El código es bastante simple.

Resulta que los usuarios que obtuvieron la aplicación a través de TestFlight se cuelgan, mientras que si construyes la aplicación e la instalas usando el IDE, ¡no se bloquea!

¿Alguien tiene alguna idea sobre qué podría estar causando esto?

¿Alguna idea para las soluciones? No queremos dejar de usar TestFlight.

+0

¿hay alguna información sobre las áreas de soporte de prueba? – Jessedc

+0

interesante, nunca tenga ese problema en nuestras implementaciones piloto con testflight. ¿Estás usando alguna API de prueba en tu código, como puntos de control o algo así? – NDY

+3

Asegúrate de compilar tu aplicación en modo Release en tu computadora y no Debug. Solo podría bloquearse en el modo de lanzamiento –

Respuesta

10

Asegúrese de crear su aplicación en modo de lanzamiento no en depuración. La aplicación solo puede bloquearse cuando está en versión.

+0

que ayuda a usar mi dispositivo en lugar de un testeo pero ¿cómo solucionarlo? – Dude

5

Lo primero que intentaré es asignar el seguimiento de la pila de bloqueo a los nombres de las funciones en su aplicación. Esto puede arrojar información útil sobre la naturaleza del bloqueo:

  1. Tan pronto como se informa un bloqueo, solicite el registro de bloqueo. Esto se puede obtener a través del organizador de Xcode o, si no es una opción, se puede capturar desde la pantalla Configuración del iPhone -> General -> Acerca de -> Diagnósticos & Uso -> Diagnóstico & Datos de uso. Desplácese hasta el nombre de la aplicación o la sección LatestCrash-AppName.plist.
  2. Aunque en teoría puede simbolizar un bloqueo, encuentro que el procedimiento descrito a continuación es una forma infalible de obtener símbolos de la pila. Convierta todas las direcciones de pila para el subproceso que se cuelga en nombres de método.
  3. Opcionalmente solicite el registro de sistema de iDevice. Esto puede incluir mensajes de falla de afirmación que también son invaluables. Tenga en cuenta que esto debe hacerse lo más rápido posible, ya que el syslog solo contiene tantas entradas antes de que se descarten. Puede usar el organizador o la línea de cmd idevicesyslog para obtener esto.

Simbolización manual: Esto funcionará siempre que sus compilaciones tengan información de depuración.

  1. Obtenga el _exact_same_ .ipa que se estrelló. Si no lo guardó, puede descargarlo desde el dispositivo usando iFunBox o la utilidad de instalación de ided de la línea cmd.
  2. Descomprimir el .ipa
  3. Ejecutar el siguiente comando en el archivo ejecutable (Payload/AppName.app/AppName):

    otool tv AppName.app | C++ filt> listing.asm

  4. Espere mientras se completa el paso anterior (puede llevar un tiempo). El archivo generado de listing.asm tendrá varios megabytes de longitud.

  5. Utilizando un editor que puede manejar grandes archivos search listing.asm para las direcciones enumeradas en el seguimiento de la pila. Tenga en cuenta que las direcciones pueden tener algunos bytes desactivados (por lo general, señalan 3 o más bytes más adelante). Además, las direcciones que no se encuentran en listing.asm indican direcciones en las bibliotecas de iOS. Ignora esos por ahora.

Por supuesto, si puede simbolizar, puede omitir este procedimiento.

Buena suerte depurando!

+0

Oye, sí, ya estamos simbolizando a través de Testflight: cargando el dSYM – daidai

+0

¿Qué dice el rastro simbolizado de la pila del hilo quebrado? Esa es información dorada. – Blanka

0

Tuvimos un problema similar. El problema con nosotros eran las bibliotecas estáticas.Cuando creamos la aplicación desde cero y fuimos a testflight, se bloqueaba, pero desde el IDE no lo era. El bloqueo se debió a que las bibliotecas estáticas no se incluyeron al hacer una compilación, pero se incluía si conectaba directamente el iPad y usaba XCode para instalarlo.

Una simple prueba probar esto: -

1.) En lugar de construir a partir de IDE, cree un archivo .app y luego cargarla a través de iTunes y comprobar si está recibiendo el accidente.

Trabajamos alrededor de esto creando manualmente .iPA, que está creando el .app y luego creando una carpeta Payload y colocando el .app junto con el info.plist.

Luego, las cosas comenzaron a funcionar en Testflight también.

+0

¿Estaba usando una secuencia de comandos de compilación automatizada? Creo que estoy teniendo un problema similar – alemangui

+0

No, no estábamos usando un script de compilación automatizado. El error también nos resultó extraño, pero después de que obtuvimos la solución alternativa para todas nuestras versiones de prueba con bibliotecas estáticas, usamos el método anterior. – VikrantY