提问人:31415926 提问时间:2/1/2014 更新时间:4/8/2022 访问量:55050
如何更改 chrome 打包的应用程序 ID 或者为什么我们需要manifest.json中的密钥字段?
How to change chrome packaged app id Or Why do we need key field in the manifest.json?
问:
我正在使用一次性 chrome 钱包付款为 chrome 商店开发打包应用程序。对于我的应用程序,我需要在运行时检查用户是否购买了该应用程序,以决定它是演示功能还是完整功能。
根据 chrome 标识 API 文档:
要保持应用程序 ID 不变,您需要将密钥复制到 安装manifest.json到源清单。
关于此过程,我有 2 个问题:
1) 在什么情况下,我的申请ID可能会发生变化?我尝试重新安装应用程序并进行了更新,但应用程序 ID 保持不变。如果没有办法更改应用程序ID,那么为什么我需要此过程?
2) 如何将带有manifest.json(包含“key”字段)的 zip 存档上传到 chrome 仪表板?问题是上传者向我抛出一个错误:
发生错误:无法处理您的项目。
清单中不允许使用 key 字段。
答:
希望有人能给出比我更好的答案。当您首次将应用上传到网上商店时,Google 会生成应用的 ID。但是,它与本地开发时拥有的 ID 不同。您的 chrome 浏览器使用其他机制生成了一些其他 ID。
当您从源代码目录作为解压缩扩展进行本地开发时,如果想要使用 chrome 网上应用店分配给您的应用的 ID,请将“密钥”放在清单中并重新加载您的应用。这对你很有帮助,因为许多 API 都希望 chrome.runtime.id(应用的 ID)与应用商店中的应用具有相同的值。您可以将“密钥”保留在清单中,它将被忽略。
评论
上传到 Chrome 网上应用店后,您的扩展程序 ID 是固定的,无法再更改。
该 ID 源自您(或 Chrome 网上应用店)首次将扩展程序打包到文件中时创建的文件。当您在“解压缩模式”下加载扩展时,会以不可预知的方式自动生成 ID。在开发过程中控制扩展 ID 的唯一方法是在清单文件中设置“key”
字段,如文档所示。.pem
.crx
如果您已经在 Chrome 网上应用店中发布了扩展程序,那么您可以使用 Chrome 扩展程序源查看器轻松获取此字段的值。安装扩展程序后,转到您的Chrome网上商店详细信息页面,然后单击CRX按钮查看源代码。当 Chrome 扩展程序源查看器加载扩展程序后,它将在控制台中显示密钥,该密钥可以直接复制粘贴到您的manifest.json:"key"
如果您尚未发布扩展程序,或者不想使用 Chrome 网上应用店,则需要先生成私钥。
- 转到并启用开发人员模式。
chrome://extensions/
- 单击“打包扩展...”,选择您的应用程序/扩展程序的目录并确认。
现在,您已经获得了一个 .crx 文件和一个 .pem 文件。备份私钥(文件)!.pem
- 提到的扩展名可用于获取相同的信息。或者,访问 https://robwu.nl/crxviewer/ 的在线演示,然后选择您刚刚创建的crx文件(同样:只需打开控制台即可查看“密钥”和扩展ID)。
当您准备好将应用/扩展程序提交到 Chrome 网上应用店时,请按以下步骤操作:
- 创建一个包含扩展名的 zip 文件(重要提示:必须在根目录下,即“directory/manifest.json”不好,“manifest.json”是好的)。
manifest.json
- 将 .pem 文件添加为
key.pem
!
(这是保留扩展 ID 所必需的)
- 将 .pem 文件添加为
- 将扩展程序上传到 Chrome 网上应用店(manifest.json中没有“key”字段,CWS 将拒绝任何包含“key”字段的上传)。
对于后续更新,不应将“key.pem”添加到 zip 文件中,因为 Chrome 网上应用店不再需要它。
评论
.pem
key
对于在文件中使用键字段加载解压缩扩展名时遇到问题的任何人。manifest.json
如果已发布的扩展在扩展列表中但已禁用,请将其删除。否则,您的本地开发扩展将不会加载,并且不会显示任何错误。原因是 chrome 检测到扩展程序的重复键并静默忽略它。
评论