jueves, 10 de enero de 2019

Soluciòn de apagado aplicacion con QtWebEngine en Macos


En la versiòn de Qt 5.11.3 para Macos, la linea de comando para distribuir las aplicaciones en dicho sistema, el comando macdeployqt, funciona muy bien. No funciona plenamente. En determinados casos dicho comando no realiza correctamente las acciones de manera automàtica.

Por ejemplo, cuando la aplicaciòn tiene el componente QtWebEngine, la aplicaciòn inicia correctamente pero al cerrar provoca una violaciòn de acceso de memoria o lo que deriva en el conocido app crash. El sistema operativo Macos informa que la aplicaciòn no se ha cerrado correctamente. Lo hace a traves de un cuadro de dialogo del mismo Macos en el centro de la pantalla.

El error se produce por la falta de los archivos .pak que se encuentran en la carpeta resource. 

Este inconveniente ocurre tambièn en otros sistemas operativos. Ya he tenido que lidiar con ello y sè còmo solucionarlo. En GNU/Linux se soluciona copiando de manera manual desde el explorador de archivos o desde el terminal. Lo que ha que hacer el copiar la carpeta resources desde los archivos de Qt hacia la carpeta en donde se encuentra el ejecutable.
Supongamos que tenemos una ejecutable que utilizarà el componente QtWebEngine en la carpeta myApp en la carpeta principal. Para este caso habrìa que copiar los archivos .pak en la siguiente ubicaciòn.

$: cp ~/Qt5.11.3/5.11.3/gcc_64/resources ~/myApp/resources 

Ahora en Macos el procedimiento es diferente. Si bien el comando macdeployqt ya ha incluido los archivos .pak dentro del myApp.app, el error del apagado o cierre fallido de nuestra aplicaciòn sigue ocurriendo. Siguiendo la lògica, he copiado los archivos en donde se incluyen en un sistema tambien basado en unix, tal es el caso y la similitud entre Macos y GNU/Linux. Seguir este razonamiento lògico ha posibilitado encontrar la soluciòn. Por ahora, este inconveniente se ha solucionado de la siguiente manera.

En primer lugar creamos la carpeta resources en la siguiente ubicaciòn.

mkdir ~/myApp.app/Contents/Resources/resources

Copiamos los archivos .pak con una linea de comando cp de un modo similar a este.

cp ~/myApp.app/Contents/Frameworks/QtWebEngineCore.framework/Resources/qtwebengine_locales/* ~/myApp.app/Contents/Resources/resources/

Por cualquier duda o inquietud me puedes contactar a las siguientes vìas de contacto.

E-mail: nextsigner@gmail.com
Whatsapps: +54 11 3802 4370

No hay comentarios:

Publicar un comentario

Entrada destacada

Entorno de Desarrollo de Unik 3.35

Esta versiòn de Unik ha sido programada en la rama unik-f1 y en el dìa de la fecha se ha fusionado en la rama master. Esta versiòn de Unik...