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

时间:2014-02-01 12:03:29

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

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

根据chrome identity API documentation

  

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

我对此程序有2个问题:

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

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

  

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

     清单中不允许使用

关键字段。

3 个答案:

答案 0 :(得分:99)

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

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

当您已在Chrome网上应用店中发布扩展程序时,您可以使用Chrome Extension Source Viewer轻松获取此"key"字段的值。安装扩展程序后,转到Chrome网上应用店详细信息页面,然后单击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

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

  1. 转到chrome://extensions/并启用开发者模式。
  2. 点击“打包扩展程序...”,选择你的应用程序/扩展程序的目录并确认 现在你有一个.crx文件和一个.pem文件。备份私钥(.pem文件)!
  3. 提到的扩展名可用于获取相同的信息。或者,访问https://robwu.nl/crxviewer/的在线演示并选择您刚刚创建的crx文件(再次:打开控制台以查看“密钥”和扩展ID)。
  4. 当您准备好将应用/扩展程序提交到Chrome网上应用店时,请按照以下步骤操作:

    1. 创建一个包含扩展名的zip文件(重要:manifest.json必须位于根目录,即“directory / manifest.json”不好,“manifest.json”很好)。
      • 将.pem文件添加为key.pem
        (这是保留扩展ID所必需的)
    2. 将扩展程序上传到Chrome网上应用店(在manifest.json中没有“key”字段,CWS将拒绝任何包含“key”字段的上传内容。)
    3. 对于后续更新,不应将“key.pem”添加到zip文件中,因为Chrome网上应用店不再需要它。

答案 1 :(得分:9)

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

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

答案 2 :(得分:0)

对于在使用union = b_elements & d_elements 文件中的键字段加载解压缩的扩展名时遇到问题的任何人。

如果已发布的扩展名在扩展名列表中但已禁用,则将其删除。因为否则您的本地开发扩展将无法加载,并且不会显示任何错误。原因是chrome检测到扩展名中的重复键,而忽略了它。