如何Chrome插件开发和打包后的id保持一致?

众所周知,在chrome插件开发中,插件的ID是chrome自动生成的全球唯一标记串。有了这个ID,我们在chrome store发布插件时,google就会为我们的插件创建一个唯一的url,用户可通过这个url下载或安装插件。

同时,这个ID也是chrome区别相同或不同插件的唯一指标。也就是说,即使是同样的插件名、一行不差的代码,如果拥有不同的ID,chrome也会认为他们是不一样的。

但是,聪明如你会发现,在通过chrome导入插件的源码文件夹进行开发时,此处的ID和你最终打包成crx再安装的ID竟然不!一!样!因此可能造成一个困扰:如果我在开发时,因为各种各样的原因,要写死插件ID在代码或者配置中,此时如果写的是开发状态下的ID,到了打包发布后,两边ID对应不上,相关的功能也就不能实现了。(譬如在做Autoupdate时)

所以,本文就是教你如何保持插件在开发和打包crx后都能保持相同ID的秘籍!

Ok,依据下面几步,你将能够快速地完成这一目的。

1. 在chrome插件管理中,点击“打包扩展程序”,将你的源码文件夹选中,然后生成一个pem密钥文件,这个文件一旦生成之后就要保存好,chrome是依据这个文件来生成ID的。 如果不甚文件丢失,你只能更换应用ID了。

2. 通过第一步的打包,你会得到一个crx文件,将此文件拖到chrome插件管理界面进行安装。

3. 安装完成之后,你需要进入Chrome的”UserData”目录下,将该目录下manifest.json中的一个key值取出来。

这个文件的位置:

Default/Extensions/<extensionId>/<versionString>/manifest.json

注意,不同的操作系统,userdata的目录不一样,不同系统的目录位置不同

Windows XP
Google Chrome: C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Default
Chromium: C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Chromium\User Data\Default


Windows 8 or 7 or Vista
Google Chrome: C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default
Chromium: C:\Users\%USERNAME%\AppData\Local\Chromium\User Data\Default


Mac OS X
Google Chrome: ~/Library/Application Support/Google/Chrome/Default
Chromium: ~/Library/Application Support/Chromium/Default


Linux
Google Chrome: ~/.config/google-chrome/Default
Chromium: ~/.config/chromium/Default


Chrome OS
/home/chronos/

3. 打开该目录下的manifest.json文件,找到

"key": "eYxnPzfSPtfL3ji4nQX3ujTXpzz3YQ6dVlvHWf1gvW8=",

“key”属性这一行,把后面一长串加密的字符串拷贝出来。

4. 对应的,将拷贝出来的key这一行内容,粘贴到你插件源文件目录下的manifest.json中。此后,你再通过插件管理界面导入插件后,你会发现显示出来的ID和打包的crx安装后的ID就是是一致的了。

Read More