it-swarm.com.de

So ändern Sie die Chrome-App-ID oder Warum brauchen wir ein Schlüsselfeld in der manifest.json?

Ich entwickle eine Paket-App für Chrome Store, die einmalige Zahlungen für Chrome-Wallets verwendet. Für meine App muss ich während der Laufzeit überprüfen, ob der Benutzer die App gekauft hat oder nicht, ob es sich um Demo-Funktionalität oder vollständige Funktionalität handelt.

Gemäß der Chrome Identity API-Dokumentation :

um die Anwendungs-ID konstant zu halten, müssen Sie den Schlüssel in der .__-Datei kopieren. installiert manifest.json in Ihrem Quellmanifest.

Ich habe 2 Fragen zu diesem Verfahren: 

1) Unter welcher Bedingung kann sich die ID meiner Bewerbung ändern? Ich habe versucht, die App erneut zu installieren und Updates vorzunehmen, aber die Apps-ID bleibt unverändert. Wenn die Apps-ID nicht geändert werden kann, warum brauche ich diese Prozedur?

2) Wie kann ich mein zip-Archiv mit manifest.json (das das Feld "key" enthält) in das Chrome-Dashboard hochladen? Das Problem ist, dass der Uploader einen Fehler bei mir ausgibt: 

Ein Fehler ist aufgetreten: Fehler beim Verarbeiten Ihres Artikels.

schlüsselfeld ist im Manifest nicht zulässig. 

38
31415926

Nach dem Hochladen in den Chrome Web Store ist Ihre Erweiterungs-ID festgelegt und kann nicht mehr geändert werden.

Die ID wird aus der Datei .pem abgeleitet, die erstellt wurde, als Sie die Erweiterung zum ersten Mal (oder im Chrome Web Store) in eine Datei .crx gepackt haben. Wenn Sie eine Erweiterung im "entpackten Modus" laden, wird auf unvorhersehbare Weise automatisch eine ID generiert. Die einzige Möglichkeit, die Erweiterungs-ID während der Entwicklung zu steuern, besteht darin, das Feld "key" in der Manifestdatei als ) festzulegen Dokumentation schlägt vor .

Wenn Sie die Erweiterung bereits im Chrome Web Store veröffentlicht haben , können Sie den Wert dieses "key"-Felds einfach über abrufen Chrome Extension Source Viewer . Rufen Sie nach der Installation der Erweiterung die Seite mit den Details zu Ihrem Chrome Webshop auf und klicken Sie auf die Schaltfläche CRX, um die Quelle anzuzeigen. Wenn der Quellcode-Viewer für Chrome die Erweiterung geladen hat, wird der Schlüssel in der Konsole angezeigt, der direkt in Ihre manifest.json kopiert werden kann:

Screenshot: Public key (paste into manifest.json to preserve extension ID) crxviewer.js:528 "key": "....", crxviewer.js:529 Calculated extension ID: jifpbeccnghkjeaalbbjmodiffmgedin

Wenn Sie Ihre Erweiterung nicht veröffentlicht haben oder den Chrome Web Store nicht verwenden möchten, müssen Sie eine generieren privater Schlüssel zuerst.

  1. Gehen Sie zu chrome://extensions/ und aktivieren Sie den Entwicklermodus.
  2. Klicken Sie auf "Erweiterung packen ...", wählen Sie das Verzeichnis Ihrer App/Erweiterung aus und bestätigen Sie.
    Jetzt haben Sie eine .crx-Datei und eine .pem-Datei. Sichern Sie den privaten Schlüssel (.pem file)!
  3. Die erwähnte Erweiterung kann verwendet werden, um die gleichen Informationen zu erhalten. Besuchen Sie alternativ die Online-Demo unter https: //robwu.nl/crxviewer/ und wählen Sie die gerade erstellte crx-Datei aus (erneut: Öffnen Sie einfach die Konsole, um die " Schlüssel "und Nebenstellennummer).

Wenn Sie bereit sind, Ihre App/Erweiterung an den Chrome Web Store zu senden, gehen Sie folgendermaßen vor:

  1. Erstellen Sie eine Zip-Datei mit Ihrer Erweiterung (wichtig: manifest.json muss sich im Stammverzeichnis befinden, d. H. "Directory/manifest.json" ist fehlerhaft, "manifest.json" ist gut).
    • Fügen Sie die .pem-Datei als key.pem hinzu!
      (Dies ist erforderlich, um die Erweiterungs-ID beizubehalten.)
  2. Laden Sie die Erweiterung in den Chrome Web Store ( ohne das Feld "key" in manifest.json hoch. Der CWS lehnt jeden Upload ab das ein "Schlüssel" -Feld enthält).

Für spätere Updates sollte "key.pem" nicht zur Zip-Datei hinzugefügt werden, da der Chrome Web Store es nicht mehr benötigt.

104
Rob W

Hoffentlich kann jemand eine bessere Antwort geben als ich. Die ID einer App wird von Google generiert, wenn Sie sie zum ersten Mal in den Web Store hochladen. Es ist jedoch nicht dieselbe ID, die Sie beim lokalen Entwickeln haben. Ihr Chrome-Browser hat eine andere ID mit einem anderen Mechanismus generiert.

Wenn Sie lokal aus Ihrem Quellcode-Verzeichnis als entpackte Erweiterung entwickeln und die ID verwenden möchten, die der Chrome-Web-Store Ihrer App zugewiesen hat, legen Sie den "Schlüssel" in Ihr Manifest und laden Ihre App erneut. Dies hilft Ihnen, da viele APIs davon ausgehen, dass chrome.runtime.id (die ID Ihrer App) den gleichen Wert wie die App im Store hat. Sie können den "Schlüssel" in Ihrem Manifest belassen und es wird ignoriert.

9
kzahel

Für alle, die Probleme beim Laden der entpackten Erweiterung mit dem Schlüsselfeld in der manifest.json-Datei haben. 

Entfernen Sie Ihre veröffentlichte Erweiterung, wenn Sie sie in Ihrer Erweiterungsliste hat, jedoch deaktiviert ist. Ansonsten wird Ihre lokale dev-Erweiterung nicht geladen und es wird kein Fehler angezeigt. Der Grund dafür ist, dass Chrome doppelte Schlüssel für die Erweiterung erkennt und ignoriert.

0
holmberd