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

314*_*926 47 google-chrome chromium google-chrome-extension google-chrome-devtools google-chrome-app

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

根据chrome identity API文档:

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

我有2个关于此程序的问题:

1)在什么条件下我的申请的ID可能会改变?我试图重新安装应用程序并进行更新,但应用程序ID保持不变..如果没有办法更改应用程序ID,为什么我需要此程序?

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

发生错误:无法处理您的商品.

清单中不允许使用关键字段.

Rob*_*b W 108

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

该ID源自.pem您第一次(或Chrome网上应用店)将扩展程序打包到文件中时创建的.crx文件.在"解压缩模式"下加载扩展时,会以不可预测的方式自动生成ID.在开发期间控制扩展ID的唯一方法是"key"在清单文件中设置字段,如文档所示.

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

屏幕截图:公钥(粘贴到manifest.json以保留扩展ID)crxviewer.js:528

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

  1. 转到chrome://extensions/并启用开发人员模式.
  2. 单击"打包扩展名...",选择您的应用程序/扩展程序的目录并确认.
    现在你有一个.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网上应用店(没有manifest.json中的"key"字段,CWS将拒绝任何包含"key"字段的上传).

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

  • 那么开发已发布扩展的最佳方法是什么?只需在开发时添加“key”字段并在发布任何更新之前将其删除? (3认同)
  • 我在开发过程中找不到要设置的“键”值。似乎 Chrome 应用程序不像普通扩展程序那样存储在 /Extensions/... 文件夹中。有谁知道在哪里可以找到它? (2认同)

kza*_*hel 9

希望有人能给出比我更好的答案.当您首次将其上传到网上商店时,Google会生成应用的ID.但是,它与您在本地开发时的ID不同.您的chrome浏览器使用其他一些机制生成了一些其他ID.

当您从源代码目录本地开发作为解压缩的扩展,并且您想要使用chrome web store分配给您的应用程序的ID时,您将"密钥"放在清单中并重新加载您的应用程序.这对您有所帮助,因为许多API都希望chrome.runtime.id(您应用的ID)与商店中的应用值相同.您可以在清单中留下"密钥",它将被忽略.