google-chrome - 如何更改 chrome 打包的应用程序 id 或者为什么我们需要在manifest.json 中添加关键字段?

标签 google-chrome google-chrome-extension google-chrome-devtools chromium google-chrome-app

我正在使用一次性 chrome 钱包付款为 chrome 商店开发打包应用程序。对于我的应用程序,我需要在运行时检查用户是否购买了该应用程序,以决定它是演示功能还是完整功能。

根据chrome identity API documentation :

to keep application ID constant, You need to copy the key in the installed manifest.json to your source manifest.

我对此过程有 2 个问题:

1) 在什么情况下我的应用程序的 ID 可能会发生变化?我尝试重新安装应用程序并进行更新,但应用程序 ID 保持不变。如果无法更改应用程序 ID,为什么我需要此过程?

2) 如何将带有 manifest.json(包含“key”字段)的 zip 存档上传到 chrome 仪表板?问题是上传者向我抛出错误:

An error occurred: Failed to process your item.

key field is not allowed in manifest.

最佳答案

上传到 Chrome 网上应用店后,您的扩展程序 ID 就被固定,无法再更改。

ID 源自您(或 Chrome 网上应用店)首次将扩展程序打包到 .crx 文件中时创建的 .pem 文件。当您在“解压模式”下加载扩展时,会以不可预测的方式自动生成 ID。 在开发过程中控制扩展 ID 的唯一方法是设置 "key" list 文件中的字段,如 documentation suggests .

当您已经在 Chrome 应用商店中发布扩展程序时,您可以使用 Chrome Extension Source Viewer 轻松获取此“key” 字段的值。 。安装扩展程序后,转到 Chrome 网上应用店详细信息页面,然后单击 CRX 按钮查看源代码。当 Chrome 扩展源查看器加载扩展程序后,它将在控制台中显示 key ,可以直接将其复制粘贴到您的 manifest.json 中:

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

如果您未发布您的扩展程序,或者您不想使用 Chrome 网上应用店,那么您需要先生成私钥。

  1. 转至 chrome://extensions/ 并启用开发者模式。
  2. 点击“打包扩展程序...”,选择您的应用/扩展程序的目录并确认。
    现在您已经有了一个 .crx 文件和一个 .pem 文件。备份私钥(.pem 文件)!
  3. 提到的扩展可用于获取相同的信息。或者,访问在线演示:https://robwu.nl/crxviewer/并选择您刚刚创建的 crx 文件(同样:只需打开控制台即可查看“ key ”和扩展 ID)。

当您准备好向 Chrome 网上应用店提交应用/扩展程序时,请按照以下步骤操作:

  1. 创建一个包含您的扩展程序的 zip 文件(重要提示:manifest.json 必须位于根目录,即“directory/manifest.json”不好,“manifest.json”很好)。
    • 将 .pem 文件添加为 key.pem!
      (这是保留扩展 ID 所必需的)
  2. 将扩展程序上传到 Chrome 网上应用店(ma​​nifest.json 中没有“key”字段,CWS 将拒绝任何包含“key”字段的上传)。

对于后续更新,不应将“key.pem”添加到 zip 文件中,因为 Chrome 网上应用店不再需要它。

关于google-chrome - 如何更改 chrome 打包的应用程序 id 或者为什么我们需要在manifest.json 中添加关键字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497781/

相关文章:

javascript - Chrome 中的打印问题

javascript - 我的 jQuery 在 Chrome 中工作,但在 IE 11 中不工作

javascript - Chrome 扩展 - 在浏览器上加载 js 之前获取 Html DOM

php - JS 和 PHP 的加载时间不一致

css - FF4 中的填充错误

javascript - Chrome 中的 WebSQL 和 localStorage 范围

google-chrome - 如何从 Chrome 扩展程序中获取设备名称(或主机名)?

javascript - Chrome扩展注入(inject)js

firefox - 如何在当前浏览器中截取开发工具的屏幕截图?

javascript - 如何在 Google Chrome 开发者工具中搜索范围变量?