Solar2D Native 用户可以在第三方服务器上托管的插件中启用插件。这允许你使用第三方插件,并为内部使用创建插件,利用 Solar2D 的快速构建流程以及你编写的本机代码。
插件必须针对每个平台单独打包为 .tgz
文件,并托管在 Web 服务器上。
按照插件指南构建插件。请记住,对于每个支持平台,都必须打包一个单独的存档。
在 Web 服务器上构建要托管的插件时,需要执行一些简单的额外步骤
package-plugin
。在 package-plugin
中创建一个名为 iphone
的文件夹。.a
) 文件放入该目录。resources
的新目录中。例如,用于视图的 *.nib
文件。如果你的插件依赖于其他框架,将所有已编译的框架放在名为 Frameworks
的目录下。metadata.lua
文件放入目录 package-plugin
deploy.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
。
平台可以是以下之一
android
android-kindle
appletvos
appletvsimulator
html5
iphone
iphone-sim
mac-sim
macos
win32
win32-sim
lua
例如,要在 macOS 上构建时为 iPhone 模拟器替换 bit 插件,请将存档放置在 ~/Solar2DPlugins/com.coronalabs/plugin.bit/iphone-sim/data.tgz
请注意,这些插件总是在任何其他类型的插件之前使用。