Cómo cambiar el ID de la aplicación empaquetada de Chrome o ¿Por qué necesitamos un campo clave en el archivo manifest.json?

Estoy desarrollando una aplicación empaquetada para Chrome Store con pagos únicos de monedero Chrome. Para mi aplicación, debo verificar durante el tiempo de ejecución si el usuario compró la aplicación o no para decidir si se trata de una funcionalidad de demostración o de funcionalidad completa.

De acuerdo con la documentación de la API de identidad de Chrome:

para mantener la ID de la aplicación constante, debe copiar la clave en el archivo manifest.json instalado en su manifiesto de origen.

Tengo 2 preguntas sobre este procedimiento:

1) ¿bajo qué condiciones puede cambiar la identificación de mi aplicación? Intenté volver a instalar la aplicación e hice las actualizaciones, pero el ID de las aplicaciones sigue siendo el mismo. Si no hay forma de cambiar la identificación de las aplicaciones, ¿por qué necesito este procedimiento?

2) ¿cómo puedo cargar mi archivo zip con manifest.json (que contiene el campo “clave”) al panel de control de Chrome? El problema es que el cargador me arrojó un error:

Se produjo un error: no se pudo procesar su artículo.

el campo clave no está permitido en el manifiesto.

Una vez cargado en Chrome Web Store, su ID de extensión se corrige y ya no se puede cambiar.

La ID se deriva del archivo .pem que se creó la primera vez que (o Chrome Web Store) empaquetó la extensión en un archivo .crx . Cuando carga una extensión en “modo desempaquetado”, se genera automáticamente una ID de forma impredecible. La única forma de controlar la ID de extensión durante el desarrollo es establecer el campo "key" en el archivo de manifiesto, como lo sugiere la documentación .

Cuando ya haya publicado la extensión en Chrome Web Store, puede obtener fácilmente el valor de este campo "key" utilizando el Visor de fonts de extensión de Chrome . Después de instalar la extensión, vaya a la página de detalles de la tienda web de Chrome y haga clic en el botón CRX para ver la fuente. Cuando el visor de la fuente de extensión de Chrome cargue la extensión, se mostrará la clave en la consola, que puede copiarse directamente en su archivo manifest.json:

Captura de pantalla: clave pública (pegar en manifest.json para conservar la extensión ID) crxviewer.js: 528

Si no ha publicado su extensión, o si no desea utilizar Chrome Web Store, primero debe generar una clave privada.

  1. Vaya a chrome://extensions/ y habilite el modo Desarrollador.
  2. Haga clic en “Paquete de extensión …”, seleccione el directorio de su aplicación / extensión y confirme.
    Ahora tiene un archivo .crx y un archivo .pem. Haga una .pem seguridad de la clave privada (archivo .pem )!
  3. La extensión mencionada se puede usar para obtener la misma información. Alternativamente, visite la demostración en línea en https://robwu.nl/crxviewer/ y seleccione el archivo crx que acaba de crear (nuevamente, abra la consola para ver la “clave” y la identificación de la extensión).

Cuando esté listo para enviar su aplicación / extensión a Chrome Web Store, siga los siguientes pasos:

  1. Cree un archivo zip que contenga su extensión (importante: manifest.json debe estar en la raíz, es decir, “directory / manifest.json” es malo, “manifest.json” es bueno).
    • Agregue el archivo key.pem como key.pem !
      (esto es necesario para preservar la ID de extensión)
  2. Suba la extensión a Chrome Web Store ( sin el campo “clave” en manifest.json , el CWS rechazará cualquier carga que contenga un campo “clave”).

Para actualizaciones posteriores, “key.pem” no se debe agregar al archivo zip, porque Chrome Web Store ya no lo necesita.

Espero que alguien pueda dar una mejor respuesta que yo. La identidad de una aplicación la genera Google cuando la cargas por primera vez a la tienda web. Sin embargo, no es la misma identificación que tiene cuando se desarrolla localmente. Tu navegador Chrome generó alguna otra identificación usando algún otro mecanismo.

Cuando está desarrollando localmente desde su directorio de código fuente como una extensión desempaquetada, y desea usar la identificación que la tienda web de Chrome asignó a su aplicación, coloca la “clave” en su manifiesto y recarga su aplicación. Esto lo ayuda porque muchas API esperan que chrome.runtime.id (el ID de su aplicación) tenga el mismo valor que la aplicación en la tienda. Puedes dejar la “clave” en tu manifiesto y se ignorará.