自托管插件

简介

Solar2D Native 用户可以在第三方服务器上托管的插件中启用插件。这允许你使用第三方插件,并为内部使用创建插件,利用 Solar2D 的快速构建流程以及你编写的本机代码。

打包和托管

插件必须针对每个平台单独打包为 .tgz 文件,并托管在 Web 服务器上。

作为存档打包

按照插件指南构建插件。请记住,对于每个支持平台,都必须打包一个单独的存档。

iOS

在 Web 服务器上构建要托管的插件时,需要执行一些简单的额外步骤

  1. 创建一个用于打包的目录,例如 package-plugin。在 package-plugin 中创建一个名为 iphone 的文件夹。
  2. 将插件的 iOS 库 (.a) 文件放入该目录。
  3. 插件所需的任何附加资源都放入一个名为 resources 的新目录中。例如,用于视图的 *.nib 文件。如果你的插件依赖于其他框架,将所有已编译的框架放在名为 Frameworks 的目录下。
  4. 还将 metadata.lua 文件放入目录 package-plugin
  5. 使用一个简单的打包脚本来调用 zip/tar 程序。例如,你可以在 Mac 上使用以下行,放入一个外壳脚本 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 应用的构建过程能够找到该插件(另见下文)。

Android

在 Web 服务器上构建要发布的插件时,需要执行一些简单的额外步骤

  1. 创建一个用于打包的目录,例如 package-plugin。在 package-plugin 中创建一个名为 android 的文件夹。

  2. 创建一个名为 corona.gradle 的新 Gradle 文件,并将所有依赖项和存储库定义从插件的 build.gradle 复制到该文件中。

  3. 还将 metadata.lua 文件放入目录 package-plugin

  4. 使用一个简单的打包脚本将构建结果复制到该目录并调用 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 应用的构建过程能够找到该插件(另见下文)。

Lua

该插件需要存储为平面 (无目录) 的 .tgz 格式。例如,从你的插件构建文件夹内的运行

COPYFILE_DISABLE=true tar -czf myplugin.tgz myplugin.lua metadata.lua

Web 服务器要求

将生成的 .tgz 文件上传到可从 Internet 访问的 Web 服务器。如有必要,支持 https:// 和基本身份验证以进行安全和访问控制。你还可以使用 localhost 作为 Web 服务器,因为现在构建是本地的。请注意,通过这种方式执行构建的机器必须运行服务器。

Solar2D 模拟器和构建

在模拟器中运行插件

Solar2D 模拟器仅为设备构建访问托管插件。在模拟器中运行这些插件时,可以通过将插件文件放在以下目录中在本地安装这些插件

~/Library/Application Support/Corona/Simulator/Plugins/

此文件应与作为 plugins 表中键使用的名称相匹配,例如以下 build.settings 示例中的 "plugin.hostedplugin"

设备构建/设置

为了将托管插件与 Solar2D 项目一同使用,必须对 build.settings 做以下更改

  1. 对于每个设备平台,你必须告诉 Solar2D 从哪里获取插件 .tgz 文件的 URL。

在插件的 supportedPlatforms 表中,每个平台属性键的值都应包含指向 .tgz 插件文件的 URL。

  1. 对于每个模拟器平台,你必须告诉 Solar2D 不要尝试下载 .tgz 文件或指向带有插件或 Lua 存根的 URL。

在插件的 supportedPlatforms 表中,macoswin32 键值应为 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 模拟器在启动/重新启动时会抛出一个错误,指出无法下载插件。可以忽略此消息。

使用本地存储,而不是 URL

可以使用本地存储而不是 Web 服务器。为此,请将生成的存档重命名为 data.tgz,并将其放入 Solar2DPlugins/<publiserId>/<plugin.name>/<platform>/data.tgz。可以在 macOS 上的 ~/Solar2DPlugins 或 Windows 上的 %APPDATA%\Solar2DPlugins 中找到 Solar2DPlugins

平台可以是以下之一

例如,要在 macOS 上构建时为 iPhone 模拟器替换 bit 插件,请将存档放置在 ~/Solar2DPlugins/com.coronalabs/plugin.bit/iphone-sim/data.tgz

请注意,这些插件总是在任何其他类型的插件之前使用。