Solar2D Native 用户可以在第三方服务器上托管的插件中启用插件。这允许你使用第三方插件,并为内部使用创建插件,利用 Solar2D 的快速构建流程以及你编写的本机代码。
插件必须针对每个平台单独打包为 .tgz 文件,并托管在 Web 服务器上。
按照插件指南构建插件。请记住,对于每个支持平台,都必须打包一个单独的存档。
在 Web 服务器上构建要托管的插件时,需要执行一些简单的额外步骤
package-plugin。在 package-plugin 中创建一个名为 iphone 的文件夹。.a) 文件放入该目录。resources 的新目录中。例如,用于视图的 *.nib 文件。如果你的插件依赖于其他框架,将所有已编译的框架放在名为 Frameworks 的目录下。metadata.lua 文件放入目录 package-plugindeploy.sh 中#!/bin/bash tar -czf iphone.tgz libplugin_YOUR-PLUGIN.a metadata.lua resources scp ../iphone.tgz "[email protected]:/var/www/YOUR_DOMAIN/plugins"
最后,对于那些将要使用你的自托管插件的人而言,他们必须将其位置 (www.YOUR_DOMAIN.com/plugins/android.tgz) 添加到其 build.settings 中,以使 Solar2D 应用的构建过程能够找到该插件(另见下文)。
在 Web 服务器上构建要发布的插件时,需要执行一些简单的额外步骤
创建一个用于打包的目录,例如 package-plugin。在 package-plugin 中创建一个名为 android 的文件夹。
创建一个名为 corona.gradle 的新 Gradle 文件,并将所有依赖项和存储库定义从插件的 build.gradle 复制到该文件中。
还将 metadata.lua 文件放入目录 package-plugin
使用一个简单的打包脚本将构建结果复制到该目录并调用 zip/tar 程序。例如,你可以在 Mac 上使用以下行,放入一个外壳脚本 deploy.sh 中
#!/bin/bash cp ../../build/outputs/aar/plugin-release.aar . COPYFILE_DISABLE=true tar -czf ../"$(basename "$(pwd)").tgz" --exclude='.[^/]*' ./* scp ../android.tgz "[email protected]:/var/www/YOUR_DOMAIN/plugins"
最后,对于那些将要使用你的自托管插件的人而言,他们必须将其位置 (www.YOUR_DOMAIN.com/plugins/android.tgz) 添加到其 build.settings 中,以使 Solar2D 应用的构建过程能够找到该插件(另见下文)。
该插件需要存储为平面 (无目录) 的 .tgz 格式。例如,从你的插件构建文件夹内的运行
COPYFILE_DISABLE=true tar -czf myplugin.tgz myplugin.lua metadata.lua
将生成的 .tgz 文件上传到可从 Internet 访问的 Web 服务器。如有必要,支持 https:// 和基本身份验证以进行安全和访问控制。你还可以使用 localhost 作为 Web 服务器,因为现在构建是本地的。请注意,通过这种方式执行构建的机器必须运行服务器。
Solar2D 模拟器仅为设备构建访问托管插件。在模拟器中运行这些插件时,可以通过将插件文件放在以下目录中在本地安装这些插件
~/Library/Application Support/Corona/Simulator/Plugins/
此文件应与作为 plugins 表中键使用的名称相匹配,例如以下 build.settings 示例中的 "plugin.hostedplugin"。
为了将托管插件与 Solar2D 项目一同使用,必须对 build.settings 做以下更改
.tgz 文件的 URL。在插件的
supportedPlatforms表中,每个平台属性键的值都应包含指向.tgz插件文件的 URL。
.tgz 文件或指向带有插件或 Lua 存根的 URL。在插件的
supportedPlatforms表中,macos和win32键值应为false。如果你希望在 Solar2D 模拟器中使用此插件,则可以如下所示在本地安装插件或从 URL 下载。
以下是在 build.settings 中包含托管插件的一个示例
settings =
{
plugins =
{
["plugin.hostedplugin"] =
{
publisherId = "com.company",
supportedPlatforms = {
iphone = { url="https://test:[email protected]/plugin/iphone.tgz" },
android = { url="https://test:[email protected]/plugin/android.tgz" },
["mac-sim"] = false,
["win32-sim"] = false
},
},
},
}
请注意,如果没有模拟器 URL,Solar2D 模拟器在启动/重新启动时会抛出一个错误,指出无法下载插件。可以忽略此消息。
可以使用本地存储而不是 Web 服务器。为此,请将生成的存档重命名为 data.tgz,并将其放入 Solar2DPlugins/<publiserId>/<plugin.name>/<platform>/data.tgz。可以在 macOS 上的 ~/Solar2DPlugins 或 Windows 上的 %APPDATA%\Solar2DPlugins 中找到 Solar2DPlugins。
平台可以是以下之一
androidandroid-kindleappletvosappletvsimulatorhtml5iphoneiphone-simmac-simmacoswin32win32-simlua例如,要在 macOS 上构建时为 iPhone 模拟器替换 bit 插件,请将存档放置在 ~/Solar2DPlugins/com.coronalabs/plugin.bit/iphone-sim/data.tgz
请注意,这些插件总是在任何其他类型的插件之前使用。