如何更改chrome封装的应用程序ID或者为什么我们需要manifest.json中的关键字段?

我正在使用一次性钱包支付为Chrome商店开发打包的应用程序。 对于我的应用程序,我需要在运行时检查用户是否购买了应用程序,或者不要决定它是演示function还是全function。

根据Chrome 身份validationAPI文档 :

要保持应用程序ID不变,您需要将已安装的manifest.json中的密钥复制到源代码清单。

我有两个关于这个程序的问题:

1)在什么条件下我的应用程序的ID可能会改变? 我试图重新安装应用程序,并作出更新,但应用程序ID保持不变。如果没有办法改变应用程序ID比为什么我需要这个程序?

2)我怎样才能上传我的zip存档与manifest.json(其中包含“键”字段)铬仪表板? 问题是,上传者向我抛出一个错误:

发生错误:无法处理您的项目。

清单中不允许键字段。

上传到Chrome网上应用店之后,您的扩展程序ID已修复,无法再进行更改。

该ID源自首次(或Chrome网上应用店)在.crx文件中打包扩展名时创build的.pem文件。 当您以“解包模式”加载扩展程序时,将以不可预知的方式自动生成一个ID。 在开发过程中控制扩展ID的唯一方法是通过在清单文件中设置"key"字段,如文档所示 。

当您在Chrome网上应用店中发布了扩展程序后,您就可以使用Chrome扩展程序源代码查看器轻松获取此"key"字段的值。 安装扩展程序后,请转至您的Chrome网上应用店详细信息页面,然后单击CRXbutton查看源代码。 Chrome扩展程序源代码查看器加载了扩展程序后,它将在控制台中显示该密钥,该密钥可以直接复制粘贴到您的manifest.json中:

屏幕截图:公钥(粘贴到manifest.json以保留扩展ID)crxviewer.js:528“key”:“....”,crxviewer.js:529计算得到的扩展名ID:jifpbeccnghkjeaalbbjmodiffmgedin

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

  1. 转到chrome://extensions/并启用开发人员模式。
  2. 点击“打包扩展…”,select你的应用/扩展的目录并确认。
    现在你已经有一个.crx文件和一个.pem文件。 备份私钥( .pem文件)!
  3. 所提到的扩展可以用来获得相同的信息。 也可以通过https://robwu.nl/crxviewer/访问在线演示,然后select刚创build的crx文件(再次打开控制台查看“密钥”和扩展名)。;

准备好将您的应用/扩展程序提交到Chrome网上应用店后,请按以下步骤操作:

  1. 创build一个包含你的扩展名的zip文件(重要的是: manifest.json必须在根目录下,即“directory / manifest.json”不好,“manifest.json”是好的)。
    • 将.pem文件添加为key.pem
      (这是保留扩展ID所必需的)
  2. 将扩展程序上传到Chrome网上应用店( 没有manifest.json中的“密钥”字段 ,CWS将拒绝包含“密钥”字段的任何上传)。

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

希望有人能给我一个比我更好的答案。 当您第一次将其上传到网上商店时,应用的ID由Google生成。 但是,这与当地开发人员的ID不同。 你的Chrome浏览器使用其他机制生成了一些其他的ID。

当您从源代码目录作为解压缩扩展名在本地进行开发时,如果要使用Chrome网上应用店为您的应用分配的ID,请将“密钥”放在清单中,然后重新加载应用。 这可以帮助你,因为许多API期望chrome.runtime.id(你的应用程序的ID)与商店中的应用程序的值相同。 您可以将“钥匙”留在您的清单中,它将被忽略。