XBMC插件addon.xml编写说明
翻译自http://wiki.xbmc.org/index.php?title=Addon.xml,不完全翻译。
====================================
1.引言
XBMC中每一个皮肤或脚本(或插件)都要包含一个addon.xml文件,它会设置扩展的总体信息(开发人员,版本信息和依赖库)。下面我们会讲解如何书写一个这样的文件,另外会给出皮肤和脚本(插件)版本的不同。
2.总体结构
Addon.xml有以下需要注意的:
l<addon>标签中包含<requires>标签,它列出这个扩展运行所需的组件。
l然后有一个或多个<extension>标签,每一个标签都会说明扩充的功能。
l最后,有一个特别的<extension>标签为用户描述这个扩展的整体信息。
必须包含的内容
<addon>标签
有四个属性:id、version、name和provider-name。
标签名 |
说明 |
id |
该扩展的唯一标识,必须独一无二,并且必须由小写字符、点号、下划线、破折线和数字组成,XBMC将把它的名字作为目录名,因此建议写成<类型>.<标识符>的形式。 |
version |
写成X.Y.Z(主版本号.次版本号.补丁号)的形式。一般来讲,进行测试开发时写为0.y.z形式,正式发布时为1.0.0的形式。只有在beta版或发布版才使用字母,其他情况下应只包含数字。 |
name |
扩展在XBMC界面中显示的名字。注意它必须是英文,而且不能被翻译。 |
Provider-name |
该信息出现在“开发者”一栏中,可以是独立开发者也可以是一个团队,如果有多人开发,使用逗号隔开。 |
示例:<addonid="script.hello.world"name="HelloWorld"version="0.0.1"provider-name="Dev1,Dev2">
<requires>标签
包含一个或多个<import>标签,它表示这个扩展所需要的其他扩展的名称和版本号。这些扩展可以是XBMC本身的一部分,也可以是第三方扩展。XBMC只会运行那些依赖正确的扩展,即版本号正确。当用户从仓库中安装你的扩展时,XBMC会试图解析依赖,安装依赖的扩展。必须提供依赖正确的最低版本号。
当设置optional属性为true时将使对应的扩展为可选,这将会在真正需要它的时候再安装。如果依赖丢失,依赖的扩展仍然会被安装。
如果你的扩展依赖于第三方模块,必须由用户先安装后者再安装前者。如果在已知仓库中存在,则XBMC会自动安装,否则需要你在代码中自行获取,因为XBMC不知道在<requires>中做什么。
示例:
<requires>
<importaddon="xbmc.python"version="2.1.0"/>
<importaddon="script.module.elementtree"version="1.2.7"/>
<importaddon="script.module.simplejson"version="2.0.10"optional="true"/>
</requires>
下面的扩展只会在OPENELEC上安装:
</requires>
<importaddon="os.openelec.tv"version="2.0"optional="false"/>
</requires>
可选的标签:
<importaddon="script.module.simplejson"version="2.0.10"optional="true"/>
依赖版本
每个版本的XBMC主程序需要的最低扩展版本不同,如下:
XBMCversion |
xbmc.python |
xbmc.gui |
xbmc.json |
xbmc.Metadata |
xbmc.addon |
Dharma10.1Deprecated |
1.0 |
2.11 |
2.0 |
0.1 |
|
Eden11.0 |
3.0 |
4.0 |
11.0 |
||
Frodo12.0&12.1&12.2 |
2.1.0 |
4.0.0 |
6.0.0 |
12.0.0 |
|
Gotham13.0 |
5.0.0 |
12.0.0 |
<extension>标签
Extensionpoint |
AddonCategory |
||||
Skin |
|||||
xbmc.gui.webinterface |
Webinterface |
||||
<None> |
|||||
Services |
|||||
xbmc.Metadata.scraper.albums |
Albuminformation |
||||
xbmc.Metadata.scraper.artists |
Artistinformation |
||||
xbmc.Metadata.scraper.movies |
Movieinformation |
||||
xbmc.Metadata.scraper.musicvideos |
Musicvideoinformation |
||||
xbmc.Metadata.scraper.tvshows |
TVinformation |
||||
xbmc.Metadata.scraper.library |
xbmc.ui.screensaver |
Screensaver |
|||
xbmc.player.musicviz |
Visualization |
||||
MusicAdd-ons(audio)/PictureAdd-ons(image)/ProgramAdd-ons(executable)/VideoAdd-ons(video) |
|||||
xbmc.python.weather |
Weather |
||||
Subtitles |
|||||
Lyrics |
|||||
xbmc.python.module |
xbmc.addon.video |
xbmc.addon.audio |
xbmc.addon.image |
<None> |
如果扩展不属于上述类别,则不能被用户直接安装,而是由需要它们的其他扩展来安装。
Xbmc.python.pluginsource标签
最常用的extension。<extensionpoint="xbmc.python.pluginsource">标签有一个library属性,它是插件启动时的脚本名称,必须存在于扩展主目录下。该extension还有一个子标签<provides>,它是一个由空格分隔的列表,包括图像、视频、音频和可执行文件。它将决定该扩展出现在哪个类别中。
image=>Pictures
video=>Video
audio=>Music
executable=>Programs
<blank>=>Novisiblepresence
例如:
<extensionpoint="xbmc.python.pluginsource"library="gpodderxbmc.py">
<provides>audiovideo</provides>
</extension>
Thisspecialextensionpointmustbeprovidedbyalladd-ons,andisthewaythatyouradd-onisdescribedtousersoftheXBMCadd-onmanager.
每个扩展都要包含这个标签,它为XBMC扩展管理器提供信息。
需要的信息
包含一系列必需的标签,至少应该有英文表述:
summary属性可以有一个或多个,用来说明该扩展的用途。必须是单句。可以使用lang=”ch”来翻译成其他文字。如:
<summarylang="en">HelloWorldscriptprovidessomebasicexamplesonhowtocreateyourfirstscript.</summary>
一个或多个description标签提供扩展更详细的细处。也可以翻译成其他语言。如:
<descriptionlang="en">HelloWorldscriptprovidessomebasicexamplesonhowtocreateyourfirstscript
andhopefullywillincreasethenumberofXBMCuserstostartcreatingtheirownaddons.</description>
一个或多个disclaimer标签用来向用户说明一些额外信息,可以没有。如:
<disclaimerlang="en">Feelfreetousethisscript.Forinformationvisitthewiki.</disclaimer>
Platform标签用来表示在哪些平台(包括操作系统和硬件平台)上运行。默认为all即全平台运行。可以使用的选项有:
all
linux
osx
osx64
osx32
ios
windx
wingl
android
如:
<platform>all</platform>
Language标签。说明在内容中的语言,可以使用在插件、脚本或削刮器中。可以为空。
Listoflanguagecodes(ISO-639:1988)
<language>endefr</language>
或:
<language></language>
<broken>deprecated</broken>
附加信息
License标签:使用的许可证。
<license>GNUGENERALPUBLICLICENSE.Version2,June1991</license>
Forum标签,表明相关的论坛。
<forum>putURLhere</forum>
Website标签,表明相关网站。
<website>putURLhere</website>
<source>putURLhere</source>
E-mail标签:作者的电子邮箱地址。可以使用以下两种格式:
<email>foo@bar.com</email>
<email>fooatbardotcom</email>
皮肤插件中的特别项目
概览
defaultresolution |
皮肤的默认分辨率。 |
defaultresolutionwide |
默认的宽屏(1080i,720p,480p16x9,NTSC16x9andPAL16x9)分辨率。如果没有该文件,则使用<defaultresolution>文件夹。 |
defaultthemename |
|
effectslowdown |
Amultiplierthatisappliedtoall<animation>effectlengthsintheskin.Usefultoslowdownallanimationsgloballysothatyoucanbetterconfiguretimingsandseeinteractionsbetweenanimatingcontrols. |
debugging |
Whensettotrue,it'lldisplayonscreendebuginformation(xmlfilename,mousepositionandfocusedcontroltypeandname)intheskin. |
res |
Supportforarbitraryskinresolutions. |
2.2.2Howwindowxmlfilesarefound
XBMCcanruninmanydifferingresolutions,andaskinshouldtryandcatertoalltheseresolutions.Theeasiestwayistodevelopforonespecificresolutionandmakesurethatallcontrolscontain<width>and<height>tags.Thatway,XBMCcanscalethecontrolstothenewscreenresolution.
However,youmaychoosetodevelopalternativewindowxmlfilesfordifferingresolutions(suchasforHDTVresolutions,orforwidescreenversus4x3resolutions).
TheorderthatXBMClooksforit'sskinfilesareasfollows:
Itfirstlooksinthecurrentscreenmodefolder(oneof1080i,NTSC16x9,NTSC,PAL16x9orPAL)
Ifthecurrentscreenmodeis1080i,itthenlooksinthe720pfolder.
Ifthecurrentscreenmodeisawidescreenmode(1080i,PAL16x9)thenitlooksinthe<defaultresolutionwide>folder.
Finally,itlooksinthe<defaultresolution>folder.
Thisallowsyoutojustputanywindowfilesthatdonotrequirespecialtreatmentfor16x9resolutionsetc.inthe<defaultresolution>folder,preventingneedlessrepetition.
script/plugin扩展的特别项目
未加入
3.addon.xml示例
皮肤扩展的addon.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<addon
id="skin.confluence"
version="2.1.3"
name="Confluence"
provider-name="Jezz_X|TeamXBMC">
<requires>
<importaddon="xbmc.gui"version="4.0.0"/>
</requires>
<extension
point="xbmc.gui.skin"
defaultthemename="textures.xbt"
debugging="false"
effectslowdown="0.75">
<reswidth="1280"height="720"aspect="16:9"default="true"folder="720p"/>
</extension>
<extensionpoint="xbmc.addon.Metadata">
<summarylang="en">ConfluenceskinbyJezz_X.(XBMC'sdefaultskin)</summary>
<descriptionlang="en">ConfluenceisthedefaultskinforXBMC9.11andabove.Itisacombinationofconceptsfrommanypopularskins,andattemptstoembraceandintegratetheirgoodideasintoaskinthatshouldbeeasyforfirsttimeXBMCuserstounderstandanduse.</description>
<disclaimerlang="en">ConfluenceisthedefaultskinforXBMC,removingitmaycauseissues</disclaimer>
<platform>all</platform>
<license>GNUGENERALPUBLICLICENSE.Version2,June1991</license>
<forum></forum>
<website></website>
<email></email>
<source></source>
</extension>
</addon>
Onethingtonoteisthatalltagnamesarelowercase.XMLtagnamesarecasesensitive!
scripts/plugins扩展的addon.xml
<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>
<addon
id="script.artwork.downloader"
name="ArtworkDownloader"
version="12.0.12"
provider-name="Martijn">
<requires>
<importaddon="xbmc.python"version="2.1.0"/>
<importaddon="xbmc.json"version="6.0.0"/>
<importaddon="xbmc.addon"version="12.0.0"/>
<importaddon="script.module.elementtree"version="1.2.7"/>
<importaddon="script.module.simplejson"version="2.0.10"optional="true"/>
<importaddon="script.common.plugin.cache"version="1.3.0"/>
</requires>
<extensionpoint="xbmc.python.script"library="default.py">
<provides>executable</provides>
</extension>
<extensionpoint="xbmc.service"library="service.py"start="login"/>
<extensionpoint="xbmc.addon.Metadata">
<summarylang="en">DownloadsArtworkforTVshows,MoviesandMusicvideosinyourlibrary</summary>
<descriptionlang="en">DownloadsallavailableartworkforTVshows,MoviesandMusicvideosinyourlibrary.Checktheoptionsforsupportedartwork[CR]Artworksources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Checkyourskintoseewhattypeofartworkissupported![CR]EachTVShow/Moviemusthaveitsownfolder![CR]Skinintegration:[CR]Seereadmefile</description>
<disclaimerlang="en">Forbugs,requestsorgeneralquestionsvisittheArtworkDownloaderthreadontheXBMCforum.</disclaimer>
<language></language>
<platform>all</platform>
<license>GNUGENERALPUBLICLICENSE.Version2,June1991</license>
<forum></forum>
<website></website>
<email></email>
<source></source>
</extension>
</addon>
4.XBMC源代码
addon.xml遵循XMLSchemaDefinition标准。