目錄
-
入門
-
高級
Sketch插件列在GitHub存儲庫中。本文檔解釋了如何在那里發(fā)布它以及如何讓Sketch接收插件的更新。
第一次發(fā)布
Sketch插件列在GitHub存儲庫中:https://github.com/sketchplugins/plugin-directory。
要將您的插件添加到列表中,請使用關于您的插件的信息打開PR。合并后,您的插件將顯示在此處:https://sketchapp.com/extensions/plugins/
如果您使用skpm,第一次使用插件發(fā)布skpm publish,它會自動為您創(chuàng)建PR。
發(fā)布更新
從Sketch v45起,Sketch提供了官方支持的機制來更新應用程序中的插件。
如果您的插件已經(jīng)內(nèi)置了自己的更新機制,我們鼓勵您轉(zhuǎn)向使用新系統(tǒng)。這將改善用戶體驗,因為用戶將能夠在應用程序的“首選項”面板中管理選項卡內(nèi)的所有已安裝插件。
啟動時,我們檢查所有安裝插件的更新,如果有任何問題,我們會在Sketch的窗口上顯示一個徽章。點擊它會讓用戶訪問應用程序的首選項,在那里他們將能夠更新他們的插件。
目前Sketch只允許用戶更新到最新版本。將來的Sketch版本可能會為用戶提供更多的選項來選擇可以下載和安裝哪個插件版本。
您有兩種解決方案可以選擇使用此更新機制:
1.使用 skpm
通過運行skpm publish,它會自動發(fā)布插件的更新版本,并確保Sketch可以提取它。
2.手動
manifest.json包含在您的插件包中的文件中有一個額外的條目,您需要定義更新才能正常工作。
該條目被調(diào)用appcast,它是一個指定appcast文件的URL的字符串。
appcast.xml文件
appcast文件包含有關插件更新的信息,例如可用更新的版本以及可從中下載更新的位置。Sketch下載此文件以確定是否有可用的插件更新。
Appcast符合Sparkle文檔和發(fā)布更新頁面中描述的Sparkle定義的appcast 。對于Sketch插件,僅支持.zip文件作為附件。
當用于插件時,最小和最大系統(tǒng)版本不涉及操作系統(tǒng)的版本。究竟如何將它們用于更高版本的Sketch中仍未確定。
以下Appcast示例列出了插件的三個不同版本。每個版本都有自己的下載鏈接和簡要說明文字。
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Hello World Sketch Test Plugin</title>
<link>http://sparkle-project.org/files/sparkletestcast.xml</link>
<description>Brilliant Hello World Plugin</description>
<language>en</language>
<item>
<title>Version 1.1</title>
<description>
<![CDATA[
<ul>
<li>Minor update v1.1</li>
</ul>
]]>
</description>
<enclosure url="https://brillianthello.sketchplugins.com/files/HelloWorldSketchPluginTestv11.zip" sparkle:version="1.1" />
</item>
<item>
<title>Version 1.2</title>
<description>
<![CDATA[
<ul>
<li>Minor update v1.2</li>
</ul>
]]>
</description>
<enclosure url="https://brillianthello.sketchplugins.com/files/HelloWorldSketchPluginTestv12.zip" sparkle:version="1.2" />
</item>
<item>
<title>Version 2.0</title>
<description>
<![CDATA[
<ul>
<li>Major update v2.0</li>
</ul>
]]>
</description>
<enclosure url="https://brillianthello.sketchplugins.com/files/HelloWorldSketchPluginTestv20.zip" sparkle:version="2.0" />
</item>
</channel>
</rss>
在您的插件中實現(xiàn)啟動和關閉方法
如果你的插件做了任何需要初始化的事情,你應該把這個Startup處理器作為插件的一部分。執(zhí)行Shutdown處理程序也是一樣,你應該實現(xiàn)你的插件需要的任何清理代碼。你可能已經(jīng)在使用這些事件,但是插件更新比以前更重要。
當插件更新時,正在更新的版本將發(fā)送該Shutdown操作。新版本將發(fā)送一個Startup動作。
例如,如果您的插件在Sketch中顯示了一些用戶界面元素,則應刪除Shutdown處理程序中的那些元素。通過這種方式,新插件將能夠顯示已更新的用戶界面組件以及所有舊用戶界面元素已被刪除。
對于插件所維護的任何持久數(shù)據(jù)也是如此。任何未保存的信息應在Shutdown調(diào)用時寫入磁盤。
不要在Startup可以稍后運行的處理程序中包含代碼。
故障排除
所以你已經(jīng)遵循了所有的步驟,你的插件還沒有更新?試試這些:
- 刪除
PluginsWarehouse居住的文件夾。這是我們緩存插件下載的地方,如果您已經(jīng)測試了不同版本的appcast,那么您可能在那里有一些值得清理的舊東西。~/Library/Application Support/com.bohemiancoding.sketch3/ - 確保
manifest.json您下載的ZIP中有與您的appcast中的版本號相匹配的版本號。如果appcast表示ZIP包含v1.2,但實際的ZIP表示它是v1.1,則安裝將不起作用。