web-dev-qa-db-ja.com

変更方法chromeパッケージ化アプリIDまたは、manifest.jsonにキーフィールドが必要なのはなぜですか?

私はchromeワンタイムchromeウォレット支払いを使用して保存します。ユーザーがアプリを購入したかどうかはランタイム中に確認する必要があります。デモ機能か完全な機能かを決定しないかどうか。

chrome identity API documentation によると:

アプリケーションIDを一定に保つには、インストールされたmanifest.jsonのキーをソースマニフェストにコピーする必要があります。

この手順について2つの質問があります。

1)アプリケーションのIDはどのような条件で変更される可能性がありますか?アプリを再インストールして更新しようとしましたが、アプリIDは変わりません。アプリIDを変更する方法がない場合、この手順が必要な理由は何ですか?

2)manifest.json(「キー」フィールドを含む)を使用してZipアーカイブをchromeダッシュボードにアップロードするにはどうすればよいですか?問題は、アップローダーが私にエラーをスローすることです。

エラーが発生しました:アイテムの処理に失敗しました。

キーフィールドはマニフェストでは許可されていません。

46
31415926

Chromeウェブストアにアップロードすると、拡張機能IDは固定され、変更できなくなります。

IDは、最初に作成された.pemファイルから派生します(またはChrome= Web Store)が拡張機能を.crxファイルにパックしました。「アンパックモード」で拡張機能をロードすると、 IDは予測不能な方法で自動的に生成されます開発中に拡張IDを制御する唯一の方法は、マニフェストファイルの "key" フィールドを設定することです、 ドキュメントが示唆するように .

既に公開済みである場合Chromeウェブストアで拡張機能を使用している場合、["key"]フィールドの値は Chrome Extension Source Viewer 。拡張機能をインストールした後、Chrome Webストアの詳細ページに移動し、CRXボタンをクリックしてソースを表示します。 Chrome Extension Sourceビューアーは拡張機能をロードし、コンソールにキーを表示します。このキーは、manifest.jsonに直接コピーして貼り付けることができます。

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

not published拡張機能がある場合、またはChrome Web Storeを使用したくない場合は、プライベートを生成する必要があります最初にキー。

  1. chrome://extensions/に移動し、開発者モードを有効にします。
  2. [Pack extension ...]をクリックし、アプリ/拡張機能のディレクトリを選択して確認します。
    これで.crxファイルと.pemファイルができました。秘密鍵(.pemファイル)をバックアップしてください!
  3. 上記の拡張機能を使用して、同じ情報を取得できます。または、 https://robwu.nl/crxviewer/ のオンラインデモにアクセスして、作成したcrxファイルを選択します(もう一度:コンソールを開いて「キー」および拡張ID)。

アプリ/拡張機能をChromeウェブストアに送信する準備ができたら、次の手順に従います。

  1. 拡張機能を含むZipファイルを作成します(重要:manifest.jsonはルートに存在する必要があります。つまり、「directory/manifest.json」は不良、「manifest.json」は良好です)。
    • .pemファイルをkey.pemとして追加します
      (これは拡張IDを保持するために必要です)
  2. 拡張機能をChrome Web Store(manifest.jsonの「key」フィールドなしで、CWSはアップロードを拒否します「キー」フィールドが含まれます)。

以降の更新では、Chrome Web Storeはもう必要ないため、「key.pem」をZipファイルに追加しないでください。

104
Rob W

うまくいけば、誰かが私よりも良い答えをすることができます。アプリのIDは、最初にウェブストアにアップロードしたときにGoogleによって生成されます。ただし、ローカルで開発する場合と同じIDではありません。 chromeブラウザは他のメカニズムを使用して他のIDを生成しました。

ソースコードディレクトリから展開された拡張機能としてローカルで開発していて、アプリに割り当てられたchrome WebストアのIDを使用する場合、マニフェストに「キー」を配置します多くのAPIはchrome.runtime.id(アプリのID)がストア内のアプリと同じ値であることを期待するため、これが役立ちます。マニフェストに「キー」を残しておくことができます。無視されます。

9
kzahel

manifest.jsonファイルのキーフィールドを使用して、展開された拡張機能のロードに問題がある場合。

拡張機能リストにあるが無効になっている場合は、公開されている拡張機能を削除します。それ以外の場合、ローカルの開発者拡張機能はロードされず、エラーは表示されません。その理由は、chromeは拡張機能の重複キーを検出し、サイレントに無視します。

0
holmberd