yes style pwa name icon home content color capable bar apps apple app ios objective-c swift crash-reports testflight

ios - style - La aplicación se bloquea en la versión de lanzamiento pero no en la depuración



web app ipad (4)

Apple también describe un issue conocido. Lo describo brevemente en caso de que alguien busque una respuesta y la solución anterior no funcione.

Revise su crashlog para errores como

Dyld Error Message: Library not loaded: @rpath/libswiftCore.dylib

o

[....] [deny-mmap] mapped file has no team identifier and is not a platform binary: /private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib

y siga las issue Apple si tiene una salida similar a la anterior.

PD: Puede consultar el registro fácilmente incluso en Ventana -> Dispositivo en XCode. haga clic en el dispositivo y haga clic en ver los registros del dispositivo.

Como dije en el título, estoy escribiendo una aplicación para iPhone que se ejecuta perfectamente en modo de depuración, pero cuando la compilo como versión e instalo a través de TestFlight, se bloquea. Debido al registro de fallos, podría tener que hacer algo con estas líneas:

let path = NSBundle.mainBundle().pathForResource("PrinterList", ofType: "plist") if path != nil { let printerDic = NSDictionary(contentsOfFile: path!) let printerList = NSArray(array: printerDic.allKeys) printerNames = printerList as [String] }

Estoy utilizando un marco de Brother para imprimir sin AirPrint, pero creo que ese no es el problema porque la aplicación falla antes de hacer algo con el marco. Se bloquea solo en este ViewController donde ejecuto estas líneas. También necesito el marco en este ViewController también.


Hay muchas razones por las que una aplicación puede fallar en el modo de lanzamiento pero no en el modo de depuración (por ejemplo, las diferencias de asignación de memoria que muestran un error que realmente existe en ambas compilaciones). Pueden ser difíciles de rastrear, incluso con un no beta compilador / lenguaje.

Usted dice que el problema desaparece si hace lo que sugerí y construyo para el lanzamiento con las optimizaciones desactivadas. Dado que el compilador Swift todavía está en la versión beta y definitivamente tiene un problema ocasional, he visto que el compilador simplemente falla cuando se crean compilaciones optimizadas, esto puede ser un error optimizador.

Por ahora, por lo tanto, me aplazaría a mirarlo. Lanzamiento sin optimizaciones hasta que obtengamos una versión completa del compilador. Luego, vuelva a activar las optimizaciones y vea si todavía tiene el problema. Si lo haces, es el momento de comenzar a gastar tu energía tratando de averiguar si es un error del compilador o un error en tu propio código.


He tenido el mismo problema. Finalmente lo arreglé activando la whole module optimization . Combinado con las implementaciones correctas de control de acceso, esto debería solucionar su falla.

Optimización de todo el módulo según Apple:

Utilice la optimización de módulo completo para inferir final en declaraciones internas. Las declaraciones con acceso interno (el valor predeterminado si no se declara nada) solo son visibles dentro del módulo donde se declaran. Como Swift normalmente compila los archivos que conforman un módulo por separado, el compilador no puede determinar si una declaración interna está anulada o no en un archivo diferente. Sin embargo, si la optimización de módulo completo está habilitada, todos los módulos se compilan juntos al mismo tiempo. Esto permite al compilador hacer inferencias sobre el módulo completo e inferir la declaración final con declaraciones internas si no hay anulaciones visibles.

Puedes habilitar esto en la configuración de tu proyecto:

Pero tenga en cuenta que esta opción optimiza todos los archivos en un destino juntos y permite un mejor rendimiento al costo de un mayor tiempo de compilación.


Para detectar la prueba de choque, con el Nivel de optimización establecido en Más rápido, más pequeño [-Os] en el modo de depuración para simular con mayor precisión el código que se generará y ejecutará en el dispositivo del usuario.

Puede configurarlo en la configuración de compilación, bajo Swift Compiler / Code Generation