本指南适用于已准备好向 plugins.solar2d.com 上的 Solar2D 免费插件目录提交插件的第三方插件开发者。或者,您也可以将插件提交至 Solar2D 插件市场,请参阅 资产打包指南。
如果您不熟悉插件这一概念以及如何创建插件,请参阅我们的 插件 指南。
插件的分发根据其将被用于何种产品而有所不同。
您的插件将实时托管在 Corona 的构建服务器上,供所有 Solar2D 开发者立即使用。当 Solar2D 开发者创建一个需要您的插件的项目时,构建服务器将在构建过程中自动集成插件。
Solar2D Native 开发者必须在 native 项目中包含插件。根据目标平台,这可以采用多种形式:静态库 (iOS)、共享库 (macOS/Windows/Android) 或.jar 文件 (Android)
如果您拥有使用 纯 Lua 编写插件
如果您的插件是用 native 代码或 hybrid native + Lua 编写的,应当通过已与您共享的 Bitbucket 仓库提交插件(该仓库的结构必须遵循特定的格式)。当您的仓库有更新时,您可以生成一个拉取请求。
为了帮助您开始,我们创建了一个 插件提交模板,其中包含 starter 文件,但缺少 plugins 二进制目录。从本质上讲,您应该使用以下结构打包您的 native/hybrid 插件文件
metadata.json — 有关您插件的核心信息;请参阅以下 metadata.json。plugins/ ${VERSION}/ — 构建版本,例如 2024.3703;请参阅以下 版本目标。android/ .jar 或 .so 二进制文件。metadata.lua — 请参阅以下 metadata.lua。resources/ package.txt — 其中含有要为其生成 R 文件的包的名称。assets/ — 此文件夹包含要添加到 assets 文件夹的文件,并且可以通过资产管理器检索。res/ — 此文件夹包含要放到 res 文件夹的文件,可通过 getIdentifier 或通过访问包的 R 文件下的 package.txt 访问。iphone/ .a 二进制(ARMv7)。metadata.lua — 请参阅以下 metadata.lua。resources/ 此文件夹将包含应用程序中所需的所有资源。它相对于根应用程序目录。iphone-sim/ .a 二进制(i386)。metadata.lua — 请参阅以下 metadata.lua。resources/ — 此文件夹将包含应用程序中所需的所有资源。它相对于根应用程序目录。mac-sim/ .dylib 二进制或 Lua 插件。win32-sim/ .dll 二进制或 Lua 插件。此 JSON 文件包含发行者的信息、插件在 Lua 中的名称以及其他相关信息,例如:
{
    "contact": "[email protected]",
    "url": "http://www.mycompany.com",
    "pluginName": "plugin.mylibrary",
    "publisherId": "com.mycompany"
}
对于 本机/混合 插件,metadata.lua 文件描述插件二进制文件属性。对于 Android、iOS 和 iOS 模拟器,需要此文件。
.jar 和 .so。此外,还可以指定需要修改以支持插件的 AndroidManifest.xml 文件中的元素。如果您正在 开发插件 并依赖于 Android 支持库 或 Google Play 服务,请阅读我们的 Android 依赖项集成 指南。
对于 iOS 和 iOS 模拟器,metadata.lua 文件应该相同。在这两种情况下,都需要指定二进制文件的格式。目前仅支持静态库(.a)。
可以通过 coronaManifest 部分声明依赖项。这些插件将在 Corona 模拟器构建期间下载并与您自己的插件捆绑在一起。
插件提交模板 提供存根版本。以下是一些示例
-- Android
local metadata =
{
    plugin =
    {
        format = "jar",
        manifest = 
        {
            permissions = {},
            usesPermissions =
            {
                "android.permission.INTERNET",
                "android.permission.ACCESS_NETWORK_STATE",
                "android.permission.READ_PHONE_STATE",
            },
            usesFeatures = {},
            applicationChildElements =
            {
                -- Array of strings
                [[
                    <activity android:name="com.mycompany.MyActivity"
                    android:configChanges="keyboard|keyboardHidden"/>
                ]],
            },
        },
    },
    coronaManifest = {
        dependencies = {
            ["shared.memoryBitmap"] = "com.coronalabs",
        },
    },
}
return metadata
-- iOS / iOS Simulator
local metadata =
{
    plugin =
    {
        format = "staticLibrary",
        -- This is the name without the "lib" prefix
        -- In this case, the static library is called "libplugin_openudid.a"
        staticLibs = { "plugin_openudid", },
        frameworks = {},
        frameworksOptional = {},
    },
    coronaManifest = {
        dependencies = {
            ["shared.memoryBitmap"] = "com.coronalabs",
        },
    },
}
return metadata
对于 iOS 框架,Corona 会自动链接到以下框架。如果需要链接到其他框架,可以在 frameworks 表中将它们指定为必需的,或在 frameworksOptional 表中将它们指定为可选(弱链接)。指定时,请省略 .framework 扩展名。
通讯录AddressBookUI资产库AudioToolboxAVFoundationCFNetworkCoreGraphicsCoreLocationCoreMediaCoreMotion基础游戏中心iAdImageIOMapKitMediaPlayerMessageUIMobileCoreServicesOpenALOpenGLES照片QuartzCore安全StoreKitSystemConfigurationUIKit此外,为了向后兼容,Corona 会弱链接到 Accounts、AdSupport、Social 和 Twitter 框架。
对于 Android,资源可以在构建后放入生成的 .apk 中的 assets 或 res 目录中。
要将资源打包到 assets 目录中,请将资源放入下面指定的 assets 文件夹中。该目录结构将一直保存在构建过程中。
plugins/ ${VERSION}/ — 构建版本,例如 2024.3703;请参阅以下 版本目标。android/ resources/ assets/ — 此文件夹包含要添加到 assets 文件夹的文件,并且可以通过资产管理器检索。要将资源打包到 res 目录中,请将资源放入下面指定的 res 文件夹中。该 res 文件夹可以包含子文件夹,这些子文件夹是本机 Android 构建中的相同文件夹,例如 drawable、layout 等。
plugins/ ${VERSION}/ — 构建版本,例如 2024.3703;请参阅以下 版本目标。android/ resources/ res/ — 此文件夹包含要放到 res 文件夹的文件,可通过 getIdentifier 或通过访问包的 R 文件下的 package.txt 访问。若要将资源包含在 .app 捆绑包中,请将其放入下面指出的 resources 文件夹中。这些资源将相对于基本目录添加到捆绑包中。例如,如果您将 example.png 放入 resources 文件夹中,那么它将像 example.app/example.png 一样被包含。
plugins/ ${VERSION}/ — 构建版本,例如 2024.3703;请参阅以下 版本目标。iphone/ resources/ 此文件夹将包含应用程序中所需的所有资源。它相对于根应用程序目录。iphone-sim/ resources/ — 此文件夹将包含应用程序中所需的所有资源。它相对于根应用程序目录。插件发布到 Corona 的服务器时,您必须指定
例如,如果您希望您的插件在编译 2024.3703 或更高版本中得到支持,您应按照上面所示的目录结构为 ${VERSION} 使用 2024.3703。然后,在您的文档中或其他地方,告知开发者安装 Solar2D 版本 2024.3703 或更高版本以访问该插件。
在编译插件二进制文件时,您应使用相应的 Solar2D Native 版本。
对于新插件,我们强烈建议您支持最新的公开版本。这可确保您的插件可供尽可能最广泛的用户使用。
通常情况下,当您更新插件二进制文件时,您只需
在这种情况下,您应部署一个单独的插件二进制文件。该二进制文件将对应于 Solar2D 的不同的/较新编译版本。然后,开发者可以轻松获取该版本来访问插件的较新版本。按照这种方式,您可以保留旧版本插件二进制文件以保持向后兼容性。
至少,您需要为所有平台提供一个 Lua 插件存根,包括 Windows 和 macOS 的版本。这些存根应允许 Solar2D 开发人员像在
在插件文件夹的编译版本下,您应在名为 android、iphone、iphone-simmac-simwin32-sim
.dll 和 .dylib 文件?如果插件没有面向 Windows 或 macOS 的实现,我们建议创建 Lua 存根文件(见上文)。
如果您希望提供模拟器插件实现,您需要使用 Visual Studio(Windows)或 Xcode(macOS)。可在此处找到一些有用的指南
.dll).dylib)iphone 和 iphone-sim 文件夹?提交插件时应提交两个版本。iphone 文件夹应包含 ARMv7 插件,iphone-sim
.so)?应使用标记为“android-ndk-r10d”的 Android NDK 构建本机库 (.so) 插件。
可以通过链接静态库 (iOS) 来使用 Solar2D Native 测试插件,或通过将库包含在项目的 libs 目录中(Android)来测试插件。在进行初始测试之后,您需要将二进制文件提交给 Corona Labs,以使用 Solar2D 进行测试。