Frage Wie kann ich die Chrome-App-ID ändern? Oder warum brauchen wir das Schlüsselfeld in der manifest.json?


Ich entwickle eine gepackte App für Chrome Store mit einmaligen Chrome-Wallet-Zahlungen. Für meine App muss ich während der Laufzeit überprüfen, ob der Nutzer die App gekauft hat oder nicht, ob es Demo-Funktionalität oder volle Funktionalität geben soll.

Nach dem Chrom Identitäts-API-Dokumentation :

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

Ich habe 2 Fragen zu diesem Verfahren:

1) Unter welchen Umständen kann sich die ID meiner Bewerbung ändern? Ich habe versucht, die App neu zu installieren und Aktualisierungen vorgenommen, aber die ID der Apps bleibt gleich. Wenn es keine Möglichkeit gibt, die Apps-ID zu ändern, warum brauche ich diese Prozedur?

2) Wie kann ich mein Zip-Archiv mit manifest.json (das das "Schlüssel" -Feld enthält) in das chrome-Dashboard hochladen? Das Problem ist, dass Uploader einen Fehler auf mich werfen:

Ein Fehler ist aufgetreten: Der Artikel konnte nicht verarbeitet werden.

Schlüsselfeld ist im Manifest nicht erlaubt.


34
2018-02-01 12:03


Ursprung


Antworten:


Sobald die Erweiterung in den Chrome Web Store hochgeladen wurde, ist sie fest und kann nicht mehr geändert werden.

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

Wenn du habe bereits veröffentlicht Wenn Sie die Erweiterung im Chrome Web Store verwenden, können Sie den Wert dafür leicht erreichen "key" Feld mit dem Chrome-Versionsquellen-Viewer. Öffnen Sie nach der Installation der Erweiterung die Detailseite Ihres Chrome-Webshops und klicken Sie auf die Schaltfläche CRX, um die Quelle anzuzeigen. Wenn der Viewer für die Chrome-Erweiterungsquelle die Erweiterung geladen hat, wird der Schlüssel in der Konsole angezeigt, der direkt in Ihre Datei "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 haben nicht veröffentlicht Wenn Sie Ihre Erweiterung verwenden oder den Chrome Web Store nicht verwenden möchten, müssen Sie zuerst einen privaten Schlüssel generieren.

  1. Gehe 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 Datei)!
  3. Die erwähnte Erweiterung kann verwendet werden, um dieselben Informationen zu erhalten. Alternativ besuchen Sie die Online-Demo unter https://robwu.nl/crxviewer/ und wählen Sie die Crx-Datei, die Sie gerade erstellt haben (wieder: Öffnen Sie einfach die Konsole, um den "Schlüssel" und die Erweiterungs-ID zu sehen).

Führen Sie die folgenden Schritte aus, wenn Sie Ihre App / Erweiterung im Chrome Web Store einreichen möchten:

  1. Erstellen Sie eine Zip-Datei mit Ihrer Erweiterung (wichtig: manifest.json muss an der Wurzel sein, d. h. "directory / manifest.json" ist schlecht, "manifest.json" ist gut).
    • Fügen Sie die .pem-Datei als hinzu key.pem!
      (Dies ist notwendig, um die Erweiterungs-ID zu erhalten)
  2. Laden Sie die Erweiterung in den Chrome Web Store hoch (ohne das Schlüsselfeld in manifest.jsonDie CWS lehnt alle Uploads ab, die ein "Schlüssel" -Feld enthalten.

Bei nachfolgenden Aktualisierungen sollte "key.pem" nicht zur Zip-Datei hinzugefügt werden, da der Chrome Web Store sie nicht mehr benötigt.


84
2018-02-01 16:44



Hoffentlich kann jemand eine bessere Antwort geben als ich. Die ID einer App wird von Google generiert, wenn Sie sie zum ersten Mal im Web Store hochladen. Es ist jedoch nicht die gleiche ID, die Sie bei der lokalen Entwicklung haben. Ihr Chrome-Browser hat mithilfe eines anderen Mechanismus eine andere ID generiert.

Wenn Sie lokal aus Ihrem Quellcodeverzeichnis als entpackte Erweiterung entwickeln und die ID verwenden möchten, die dem Chrome-Webspeicher für Ihre App zugewiesen wurde, fügen Sie den "Schlüssel" in Ihr Manifest ein und laden Ihre App neu. Das hilft Ihnen, weil viele APIs erwarten, dass chrome.runtime.id (die ID Ihrer App) denselben Wert hat wie die App im Geschäft. Sie können den "Schlüssel" in Ihrem Manifest belassen und er wird ignoriert.


9
2018-02-01 15:30