Las extensiones, los temas y las aplicaciones son simplemente paquetes de recursos que se unen con un archivo manifest.json
que describe el contenido del paquete. En general, el formato de este archivo es estable, pero en ocasiones se deben realizar cambios rotundos para abordar problemas importantes.
Los desarrolladores deben especificar a qué versión de la especificación del manifiesto deben orientarse sus paquetes configurando una clave manifest_version
en sus manifiestos.
Versión actual
Actualmente, los desarrolladores deben especificar 'manifest_version': 2
:
{
...,
"manifest_version": 2,
...
}
La versión 1 del manifiesto dejó de estar disponible en Chrome 18 y se eliminará la compatibilidad gradualmente de acuerdo con el siguiente programa.
Programa de asistencia de la versión 1 del manifiesto
agosto de 2012
- Web Store bloqueará la creación de nuevas extensiones del manifiesto versión 1.
- Web Store permitirá actualizaciones a extensiones existentes del manifiesto versión 1.
Marzo de 2013
- Web Store bloqueará las actualizaciones a las extensiones de manifiesto de la versión 1 el 4 de marzo de 2013.
Abril de 2013
- La versión beta de Chrome 27 dejará de empaquetar las extensiones de la versión 1 del manifiesto (o de cargarlas para desarrollo).
Junio de 2013
- Web Store quitará las extensiones de la versión 1 del manifiesto del muro, los resultados de la búsqueda y las páginas de categorías.
- Se enviarán correos electrónicos con aviso a todos los desarrolladores que tengan extensiones del manifiesto de la versión 1 que aún estén en la tienda para recordarles que se anulará la publicación de estas extensiones y se proporcionarán instrucciones para actualizarlas.
Septiembre de 2013
- Web Store anulará la publicación de todas las extensiones del manifiesto de la versión 1.
- Se enviarán los últimos correos electrónicos de aviso a los desarrolladores con extensiones de la versión 1 del manifiesto que aún estén en Web Store.
- Chrome seguirá cargando y ejecutando las extensiones instaladas de la versión 1 del manifiesto.
Enero de 2014
- Chrome dejará de cargar o ejecutar las extensiones del manifiesto de la versión 1.
Cambios entre las versiones 1 y 2
- La política de seguridad del contenido se establece en
`script-src 'self'; object-src 'self';
de forma predeterminada. Esto tiene diversos efectos en los desarrolladores, que se describen en detalle en la documentación decontent_security_policy
. - Los recursos de un paquete ya no están disponibles de forma predeterminada para sitios web externos (como el
src
de una imagen o una etiquetascript
). Si quieres que un sitio web pueda cargar un recurso contenido en tu paquete, deberás agregarlo a la lista de entidades permitidas de forma explícita con el atributo de manifiestoweb_accessible_resources
. Esto es particularmente relevante para las extensiones que crean una interfaz en un sitio web mediante secuencias de comandos de contenido insertadas. - La propiedad
background_page
se reemplazó por una propiedadbackground
que contiene una propiedadscripts
opage
. Los detalles están disponibles en la documentación de páginas de eventos. Cambios en las acciones del navegador:
- La clave
browser_actions
en el manifiesto y la APIchrome.browserActions
ya no están. En su lugar, usabrowser_action
ychrome.browserAction
singulares. - Se quitó la propiedad
icons
debrowser_action
. En su lugar, usa la propiedaddefault_icon
o browserAction.setIcon. - Se quitó la propiedad
name
debrowser_action
. En su lugar, usa la propiedaddefault_title
o browserAction.setTitle. - Se quitó la propiedad
popup
debrowser_action
. En su lugar, usa la propiedaddefault_popup
o browserAction.setPopup. - Ya no se puede especificar la propiedad
default_popup
debrowser_action
como objeto. Debe ser una cadena.
- La clave
Cambios en las acciones de la página:
- La clave
page_actions
en el manifiesto y la APIchrome.pageActions
ya no están. En su lugar, usapage_action
ychrome.pageAction
singulares. - Se quitó la propiedad
icons
depage_action
. Usa la propiedaddefault_icon
o pageAction.setIcon en su lugar. - Se quitó la propiedad
name
depage_action
. Usa la propiedaddefault_title
o pageAction.setTitle en su lugar. - Se quitó la propiedad
popup
depage_action
. En su lugar, usa la propiedaddefault_popup
o pageAction.setPopup. - Ya no se puede especificar la propiedad
default_popup
depage_action
como objeto. Debe ser una cadena.
- La clave
Se quitó la API de
chrome.self
. En su lugar, usachrome.extension
.chrome.extension.getTabContentses
(!!!) ychrome.extension.getExtensionTabs
desaparecieron. Usa extension.getViews.Port.tab
no está. En su lugar, usa runtime.Port.