Thursday, November 24, 2016

Cef - 3 , cef - 3






+

Descargar CEF3 desde aquí o aquí y copiar todos los archivos desde cualquiera de depuración o Release a la carpeta de su. exe es / será en. Se necesita una acumulación de CEF3 con tcmalloc discapacitados. Los binarios oficiales de CEF son adecuados. Copiar / enlace libcef. so, a) en una ubicación de biblioteca por defecto, por ejemplo. / Usr / lib (64). / / Local / lib usr (64) o b) en algún lugar y establecer LD_LIBRARY_PATH en consecuencia Asegúrese de incluir cthreads como la primera unidad en su programa principal. Además de los archivos de la carpeta de depuración o Release, CEF necesita los archivos / carpetas de la carpeta Recursos. A menos que ponga CefResourcesDirPath y CefLocalesDirPath. CEF espera que estén en la carpeta de su ejecutable se encuentra en. Sin embargo, en cualquier caso icudtl. dat debe estar en la misma carpeta que la biblioteca CEF! No utilice --single-proceso y no cambie CefSingleProcess en True. Esto dará lugar a una violación de segmento en pthread_mutex_lock, que es un error en cualquiera CEF3 o sí Cromo: Usted puede encontrar más detalles aquí. Si el navegador va "en blanco" (por ejemplo, cuando se carga una página), el proceso de hacer que se estrelló. La mayor parte del tiempo, parece estar relacionada con JavaScript / V8, ver depuración en forma de depurar el proceso de render. Tenga en cuenta, que el proceso de render se reiniciará automáticamente en la siguiente solicitud de página. Cuando la inicialización CEF por primera vez (en su mayoría en su aplicación principal) se inicia un subproceso. De forma predeterminada una segunda instancia del programa principal se utiliza como el sub-proceso. La forma preferida sin embargo es definir una propia (mínimo) ejecutable subproceso. Esto se puede conseguir en fpCEF3 configurando CefBrowserSubprocessPath a la ruta del ejecutable subproceso. En el ejemplo LCLSimple esto se puede hacer cambiando TMainform. FormCreate al final de main. pas. Un subproceso mínima se puede encontrar en / Ejemplos / subproceso. Tenga en cuenta, que el sub-proceso también necesita la biblioteca CEF3 y recursos en su camino, por lo que la forma más fácil es poner el ejecutable subproceso en la misma carpeta que el archivo ejecutable principal. A veces es útil para depurar los procesos parciales generados por CEF. En Linux esto se puede hacer mediante la adición a la línea de comandos. Más detalles pueden ser encontrados aquí . ¿Qué versiones de CEF son compatibles? fpCEF3 sólo admite CEF3, no hay soporte para CEF1. Ver cambios o etiqueta de versión para la versión compatible actualmente, otras versiones (anterior o posterior) puede funcionar, pero no se recomiendan. ¿Qué plataformas son compatibles? La cabecera llanura está listo para Mac, pero el componente necesita ser adoptada. ¿Hay una documentación para fpCEF? No, pero se puede encontrar información en cef3lib. pas / cef3api. pas los programas de ejemplo (aunque las muy básicas) los documentos oficiales de la API aquí el programa oficial ejemplo cefclient aquí Si tienes ganas de contribuir algunos ejemplos más Pascal - por favor. Por supuesto - los parches son siempre bienvenidos :) Visión de conjunto La infraestructura incorporada Cromo (CEF) es un marco sencillo para incrustar los navegadores basados ​​en cromo en otras aplicaciones. enlaces rápidos Introducción CEF es un proyecto de código abierto bajo licencia BSD-fundada por Marshall Greenblatt en 2008 y basado en el proyecto de Google Chromium. A diferencia del proyecto de cromo en sí, que se centra principalmente en el desarrollo de aplicaciones de Google Chrome, CEF se centra en facilitar los casos de uso del navegador integrado en las aplicaciones de terceros. CEF aísla al usuario del cromo y el parpadeo que subyace a la complejidad del código, ofreciendo las API de alta calidad de producción estables, ramas de liberación de cromo de seguimiento comunicados específicos, y las distribuciones binarias. La mayoría de las características en CEF tienen implementaciones predeterminadas que proporcionan una funcionalidad rica mientras que requiere poco o ningún trabajo de integración por parte del usuario. En este momento hay más de 100 millones de instancias instaladas en todo el mundo CEF incorporadas a los productos de una amplia gama de empresas e industrias. Una lista parcial de las compañías y productos utilizando CEF está disponible en la página CEF Wikipedia. Algunos casos de uso de CEF incluyen: Incorporación de un control de explorador Web compatibles con HTML5 en una aplicación nativa existente. Creación de una aplicación nativa de peso ligero "cáscara" que aloja una interfaz de usuario desarrollada utilizando principalmente tecnologías web. Representar el contenido web "fuera de campo" en las aplicaciones que tienen sus propios marcos de dibujo personalizado. Actuando como anfitrión de la prueba automatizada de propiedades y aplicaciones Web existentes. CEF es compatible con una amplia gama de lenguajes de programación y sistemas operativos y se puede integrar fácilmente en ambas aplicaciones nuevas y existentes. Fue diseñado desde cero con el rendimiento y la facilidad de uso en mente. El marco de base incluye interfaces de programación C y C ++ expuestas a través de las bibliotecas nativas que aíslan la aplicación host de cromo y parpadean los detalles de implementación. Se ofrece una estrecha integración entre el navegador y el programa de control que incluye soporte para plugins personalizados, protocolos, objetos JavaScript y extensiones de JavaScript. La aplicación host puede, opcionalmente, control de carga de recursos, la navegación, los menús contextuales, la impresión y más, aprovechando al mismo tiempo el mismo rendimiento y tecnologías HTML5 disponibles en el navegador web Google Chrome. Numerosas personas y organizaciones contribuyen con su tiempo y recursos para apoyar el desarrollo de CEF, pero una mayor participación de la comunidad es siempre bienvenido. Esto incluye soporte tanto para el proyecto básico CEF y proyectos externos que integran CEF con lenguajes y marcos (véase la sección "Proyectos externos" a continuación) de programación adicionales. Si usted está interesado en el tiempo para ayudar con el desarrollo CEF donar por favor, consulte la sección "Cómo ayudar" a continuación. Si usted está interesado en donar dinero para apoyar los esfuerzos generales de desarrollo y de infraestructura CEF favor visitar la página de donaciones CEF. Empezando Los usuarios nuevos al desarrollo CEF deben empezar por leer la página Tutorial Wiki para una visión general del uso de CEF y luego proceder a la página GeneralUsage Wiki para una discusión más en profundidad o cuestiones arquitectónicas y de uso. La documentación completa de la API está disponible aquí. CEF apoyo y discusión relacionados se pueden encontrar en el Foro CEF. Las distribuciones binarias Las distribuciones binarias, que incluyen todos los archivos necesarios para construir una aplicación basada en CEF, están disponibles en la página de descargas. Las distribuciones binarias son autónomos y no requieren la descarga del código fuente CEF o cromo. Los archivos de símbolos de depuración para las distribuciones binarias de libcef también se pueden descargar desde los enlaces anteriores. Fuente Distribuciones El proyecto CEF es una extensión del proyecto Chromium. CEF mantiene desarrollo y la liberación ramas que hacen un seguimiento ramas de cromo. CEF código fuente puede ser descargado, construido y se envasa manualmente o con herramientas automatizadas. Visita la página BranchesAndBuilding Wiki para más información. Proyectos externos El marco CEF base incluye soporte para los lenguajes de programación C y C ++. Gracias a la ardua labor de los mantenedores de CEF externa puede integrar con un número de otros lenguajes de programación y los marcos. Estos proyectos externos no son mantenidos por CEF así que por favor póngase en contacto con el respectivo proyecto mantenedor si tiene alguna pregunta o problema. Si usted es el mantenedor de un proyecto no indicados anteriormente, y le gustaría que su proyecto esta lista por favor sea posterior al Foro CEF o póngase en contacto directamente Marshall. Ayudando CEF sigue siendo en gran medida un trabajo en progreso. Algunas de las formas en que puede ayudar a cabo: - Vote por problemas en el seguimiento de incidencias CEF que son importantes para usted. Esto ayuda a la priorización del desarrollo. - Informar de cualquier error que se encuentran o Pedido de funciones que son importantes para usted. Asegúrese de buscar primero los problemas ya existentes antes de crear otros nuevos. Utilice el Foro CEF y no el seguimiento de incidencias para las preguntas de uso. Cada número CEF debe: Incluir la revisión CEF o la versión de la distribución binaria. Incluir información sobre su sistema operativo y versión del compilador. Si el problema es un error, por favor proporcionar información detallada reproducción. Si el problema es una característica describa qué la característica es beneficiosa. - Pruebas de unidad de escritura para una funcionalidad nueva o existente. - Las solicitudes de tirar y parches son bienvenidos. Ver cuestiones abiertas en el seguimiento de incidencias CEF o buscar TODO (CEF) en el código fuente de las ideas. Si usted desea contribuir con cambios en el código fuente a CEF por favor, siga las siguientes pautas: - Crear o encontrar un tema apropiado para cada insecto distinto, característica o cambio. - Presentar una solicitud de extracción o crear un parche con los cambios y adjuntarlo a la cuestión CEF. Los cambios deben: Ser presentada en contra de la actual rama principal CEF a menos que se fija de forma explícita un error en una rama de lanzamiento CEF. Sigue el estilo de los archivos de origen CEF existentes. En general, CEF utiliza el estilo de codificación de cromo. Incluir pruebas nuevas o modificadas de unidad según sea apropiado para la funcionalidad. No incluir cambios innecesarios o no relacionados. Un número ilimitado de repositorios públicos y privados alojados. Gratuito para los equipos pequeños! CEF / Arquitectura Esta página Wiki proporciona una visión general de la arquitectura CEF. Nota a los editores: Los cambios realizados en esta página Wiki sin la aprobación previa a través del Foro CEF o gestor de incidencias pueden perderse o revertidos. Fondo La infraestructura incorporada Cromo (CEF) es un proyecto de código abierto creada por Marshall Greenblatt en 2008 para desarrollar un control de navegador Web basado en el proyecto de Google Chromium. Actualmente CEF es compatible con una variedad de lenguajes de programación y sistemas operativos y se puede integrar fácilmente en ambas aplicaciones nuevas y existentes. Fue diseñado desde cero con el rendimiento y la facilidad de uso en mente. El marco de base incluye interfaces de programación C y C ++ expuestas a través de las bibliotecas nativas que aíslan la aplicación host de cromo y de ejecución WebKit detalles. Se ofrece una estrecha integración entre el control del navegador y la aplicación host incluyendo soporte para plugins personalizados, protocolos, objetos JavaScript y extensiones de JavaScript. La aplicación host puede, opcionalmente, control de carga de recursos, la navegación, los menús contextuales, la impresión y más, aprovechando al mismo tiempo el mismo rendimiento y tecnologías HTML5 disponibles en el navegador web Google Chrome. dependencias El proyecto CEF depende de una serie de otros proyectos mantenidos por terceros. Los principales proyectos que depende de CEF son: Cromo - Proporciona funcionalidad general como la pila de red, roscado, bucle de mensajes, registro y control de procesos necesarios para crear un navegador web completamente funcional. Implementa código de "plataforma" que permite WebKit para comunicarse con V8 y Skia. Muchos documentos de diseño de cromo se pueden encontrar en http://dev. chromium. org/developers. WebKit - Proporciona DOM análisis, el diseño, la gestión de eventos, lo que hace HTML5 y JavaScript API. Algunas implementaciones de HTML5 se dividen entre el WebKit y bases de código de cromo. V8 - motor de JavaScript. Skia - biblioteca de gráficos 2D se utiliza para representar el contenido no acelerado. Más información sobre la forma de cromo integra Skia está disponible aquí. Ángulo - gráficos en 3D capa de traducción para Windows que convierte GLES llama a DirectX. Más información sobre composición acelerada está disponible aquí. versiones Ha habido tres versiones de CEF hasta la fecha. CEF1 - Proceso de una sola aplicación mediante la API de cromo WebKit. CEF2 - la implementación de procesos de múltiples construido en el navegador Chromium. CEF3 - la implementación de procesos de múltiples usando la API de contenido de cromo. Uso de API común Todas las versiones de CEF exponen a un simple, API fácil de usar, diseñado para aislar a los usuarios desde el cromo y el código subyacente WebKit complejidad. El uso común es el siguiente: CEF inicializar llamando CefInitialize (). Realizar trabajos en el bucle de mensajes de interfaz de usuario llamando CefRunMessageLoop () o CefDoMessageLoopWork (). Crear una ventana de navegador, llamando CreateBrowser () o CreateBrowserSync () y pasando una instancia CefClient. Apagar CEF llamando CefShutdown () antes de cerrarse la aplicación. C Envoltura API La biblioteca compartida libcef exporta un API de C que aísla al usuario del tiempo de ejecución de CEF y la base de código. El proyecto libcef_dll_wrapper, que se distribuye en forma de código fuente como parte de la versión binaria, envuelve este exportó API C en una API de C ++ que a continuación se vincula a la aplicación cliente. El código para esta capa de traducción API de C / C ++ se genera automáticamente por el traductor de. el uso directo de la API C se describe en la página UsingTheCAPI Wiki. La arquitectura solo proceso utilizado por CEF1 integra cromo y WebKit directamente en la aplicación cliente. Las ventajas del proceso de arcitecture solo incluyen el uso de memoria reducida y una mayor integración con la aplicación cliente. Las desventajas incluyen un mejor rendimiento con ciertos tipos de contenido acelerado y las colisiones se redujeron debido a los plugins como Flash que se ejecutan en el mismo proceso. Uso de la API A continuación se muestra una visión general de las principales interfaces CEF1 y sus usos. Para obtener más información sobre las funciones admitidas específicos e interfaces visitar la página GeneralUsage Wiki o navegar por la CEF1 archivos de inclusión. CefApp - Esta interfaz se pasa a CefInitialize () y permite la aplicación de personalizar la funcionalidad global como la carga de recursos y manejo de proxy. CefClient - Esta interfaz se pasa a CefCreateBrowser () o CefCreateBrowserSync () y actúa como la conexión entre una instancia navegador CEF individual y la aplicación cliente. interfaces adicionales para la administración de solicitudes, el manejo de la pantalla, etc. están expuestos a través de esta interfaz. CefBrowser - Expone capacidades proporcionadas por el navegador. Esto incluye la espalda / de navegación hacia adelante, la recuperación de origen, solicitud de carga, etc. Una sola CefBrowser puede tener uno o más objetos CefFrame niño. Consideraciones de roscado CEF1 incluye la interfaz de usuario, IO y roscas archivo. El hilo de interfaz de usuario crea las ventanas del navegador y se utiliza para toda la interacción con WebKit y V8. El proceso de IO se utiliza para manejar solicitudes de esquema y de red. El hilo de archivo se utiliza para el caché de la aplicación y otras actividades diversas. Al utilizar CEF1 usted debe tener las siguientes consideraciones de roscado en mente: No lleve a cabo operaciones de bloqueo en el subproceso de interfaz de usuario. Esto puede conducir a serios problemas de rendimiento. El hilo de interfaz de usuario será el mismo que el hilo principal de la aplicación si CefInitialize () se llama con un valor de CefSettings. multi_threaded_message_loop falsa. Todo WebKit y V8 iteración debe tener lugar en el subproceso de interfaz de usuario. En consecuencia, algunas funciones de API CEF, sólo pueden usarse en el subproceso de interfaz de usuario. Las funciones que tienen esta limitación serán documentados en consecuencia en el archivo de cabecera CEF asociado. El método CefPostTask puede ser utilizado para publicar tareas asnychronously entre los distintos hilos. Detalles de implementacion CEF1 tiene las siguientes clases principales de aplicación: CefContext - Representa el contexto mundial CEF. Un objeto CefContext solo es creado por CefInitialize () y destruido por CefShutdown (). CefProcess - Usado por CefContext para crear y administrar los hilos de CEF. BrowserWebKitInit - Gestiona el entorno global como WebKit expuesto por la API de cromo WebKit. WebViewHost - Proporciona la ventana de la aplicación nativa "contenedor" para una vista Web. Esta clase extiende WebWidgetHost que proporciona una funcionalidad compartida en común con los widgets emergentes (como los menús de selección) en algunas plataformas. CefBrowserImpl - Implementa la interfaz CefBrowser, crea la WebViewHost y proporciona el código de unión para una sola instancia del navegador. BrowserWebViewDelegate - Implementa las interfaces de WebKit que proporcionan comunicación entre CefBrowserImpl y la vista Web subyacente. CEF2 se suspendió cuando se anunció cromo soporte para la API de contenido. Información sobre CEF2 se puede encontrar aquí. CEF3 utiliza la misma arquitectura de múltiples procesos como el navegador web Chromium a través de la API de contenido de cromo. Esta arquitectura proporciona un número de ventajas sobre la arquitectura único proceso utilizado por CEF1: Soporte para modos de ejecución de múltiples procesos de un solo proceso y. Más de código compartido con el navegador Chromium. Mejora del rendimiento y menos roturas debido al uso de la ruta de código "soportado". Un acceso más rápido a las nuevas características. En la mayoría de los casos CEF3 tendrá las mismas características de rendimiento y estabilidad como el navegador web Chromium. Información sobre el estado de desarrollo CEF3 se puede encontrar aquí. Uso de la API CEF3 inicialización necesita tener en cuenta varios procesos. En Windows y Linux todos los procesos pueden compartir el mismo ejecutable u opcionalmente usar un ejecutable independiente para los sub-procesos (a través del valor CefSettings. browser_subprocess_path). En Mac OS-X todos los sub-procesos deben ponerse en marcha mediante un haz de aplicación separada. Esto es necesario porque en Mac OS-X los sub-procesos deben tener un archivo Info. plist diferente. La función CefExecuteProcess () es responsable de ejecutar la lógica sub-proceso. Examina el "tipo" indicador de línea de comandos para determinar el tipo de proceso se está ejecutando actualmente. Si se llama al proceso de navegador (identificado por ningún valor de línea de comandos "tipo") devolverá inmediatamente con un valor de -1. Si se llama a un proceso secundario reconocido que bloqueará hasta que el proceso debe salir y después devolver el código de salida del proceso. Si el proceso de ejecución de la aplicación del navegador debe continuar con el proceso de inicialización estándar como se describe en la sección "Uso de la API común". Ver cef_app. h para una descripción completa de las funciones de inicialización y su uso. Véase la función wWinMain cefclient_win. cc para una implementación de ejemplo en Windows. El "proceso --single" indicador de línea de comandos o el valor CefSettings. single_process pueden ser utilizadas para ejecutar CEF3 en un solo proceso. Esto es útil para propósitos de depuración, pero no se recomienda para su uso en producción. A continuación se muestra una visión general de las principales interfaces CEF3 y sus usos. Para obtener más información sobre las funciones admitidas específicos e interfaces visitar la página GeneralUsage Wiki o navegar por la CEF3 archivos de inclusión. CefApp - Esta interfaz se pasa a CefExecuteProcess () y permite la aplicación de personalizar la funcionalidad global como la carga de recursos y manejo de proxy. Parte de la funcionalidad es compartida por todos los procesos, algunos deben ser implementadas en el proceso de navegador y algunos deben ser implementadas en el proceso de render. Ver comentarios en el archivo de cabecera para más detalles. CefClient - Esta interfaz se pasa a CefCreateBrowser () o CefCreateBrowserSync () en el proceso de navegador y actúa como la conexión entre una instancia navegador CEF individual y la aplicación de cliente en el proceso de navegador. interfaces adicionales para la administración de solicitudes, el manejo de la pantalla, etc. están expuestos a través de esta interfaz. CefBrowser - Expone capacidades proporcionadas por el navegador tanto en el navegador y los procesos de render. Esto incluye la navegación hacia atrás hacia adelante /, la recuperación de la fuente y la carga de recursos. Una sola CefBrowser puede tener uno o más objetos CefFrame niño. Algunos métodos deben ser llamados en un proceso específico o en un hilo en particular por lo que leer la documentación cuidadosamente. CefBrowserHost - Expone funcionalidad relacionada con anfitrión de la ventana del navegador que sólo está disponible en el proceso del navegador. Por ejemplo, recuperar el identificador de ventana padre nativa o la destrucción de la ventana del navegador. CefRenderProcessHandler - expone las capacidades de integración WebKit y V8 para la aplicación en el proceso de render. Una instancia de este objeto se devuelve a través de CefApp. Consideraciones de proceso CEF3 utiliza una serie de procesos para diferentes propósitos. proceso Browser - Este proceso es el mismo que el proceso de aplicación de cliente que llama CefInitialize (). Render proceso - el contenido Web (WebKit y V8) está alojado en un proceso. Plugin de proceso - Complementos como Flash se alojan en este proceso. Más información sobre la arquitectura plug-in está disponible aquí. proceso de GPU - contenido acelerado se representa en este proceso. Más información sobre composición acelerada está disponible aquí. proceso de Utilidad - Algunas tareas misceláneas se ejecutan en este proceso. El modelo de proceso de cromo en su conjunto se describe en detalle aquí y aquí. Los distintos procesos de CEF se comunican mediante la comunicación entre procesos. CefBrowser y CefFrame existen tanto en el navegador y procesos rinden y se pasan como argumentos a varias devoluciones de llamada. Un CefProcessMessage se puede enviar desde y entregado a un navegador en particular en un proceso en particular mediante la función CefBrowser :: SendProcessMessage y la devolución de llamada OnProcessMessageRecieved en CefClient (proceso de navegador) y CefRenderProcessHandler (proceso de render). Ver el "JavaScript Encuadernación" ejemplo en la aplicación de cefclient ejemplos de uso. XMLHttpRequest (XHR), WebSockets o similar también se pueden utilizar para la comunicación entre procesos. Por ejemplo, una solicitud XHR se puede enviar desde JavaScript que se ejecuta en el proceso de render a un tratamiento de recursos implementado en el proceso a través del navegador CefRequestHandler :: GetResourceHandler o un controlador de esquema personalizado. Consideraciones de roscado CEF1 incluye un número de hilos como se describe en la enumeración cef_types. h cef_thread_id. Al utilizar estos hilos prestar mucha atención a la forma en que están destinados a ser utilizados y en qué procesos están soportados como se documenta en el archivo de cabecera. Al utilizar CEF3 usted debe tener las siguientes consideraciones de roscado en mente: No lleve a cabo operaciones de bloqueo en cualquier tema que no sea el hilo navegador proceso ARCHIVO. Esto puede conducir a serios problemas de rendimiento. El hilo de interfaz de usuario en el proceso de navegador será el mismo que el hilo principal de la aplicación si CefInitialize () se llama con un valor de CefSettings. multi_threaded_message_loop falsa. Todo WebKit y V8 iteración debe tener lugar en el proceso de render hilo RENDERER. El método CefPostTask puede ser utilizado para publicar tareas asnychronously entre diferentes hilos en el mismo proceso. Detalles de implementacion CEF3 tiene las siguientes clases principales de aplicación: CefMainDelegate - Para implementar la lógica de arranque proceso común. CefContentClient - Implementa las devoluciones de llamada de API de contenido que son comunes a todos los procesos. CefContext - Representa el contexto CEF global en el proceso del navegador. Un objeto CefContext solo es creado por CefInitialize () y destruido por CefShutdown (). CefBrowserMainParts - implementa la lógica de arranque proceso del navegador. CefContentBrowserClient - Implementa las devoluciones de llamada de API de contenido para el proceso del navegador. CefBrowserHostImpl - Implementa las interfaces CefBrowser y CefBrowserHost en el proceso del navegador. Proporciona el código de unión e implementa las interfaces de comunicación con el RenderViewHost. CefContentRendererClient - Implementa las devoluciones de llamada de API de contenido para el proceso de render. CefBrowserImpl - Implementa la interfaz CefBrowser en el proceso de render. Proporciona el código de unión e implementa las interfaces de comunicación con el RenderView.




No comments:

Post a Comment