本指南适用于已准备好向 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
资产库
AudioToolbox
AVFoundation
CFNetwork
CoreGraphics
CoreLocation
CoreMedia
CoreMotion
基础
游戏中心
iAd
ImageIO
MapKit
MediaPlayer
MessageUI
MobileCoreServices
OpenAL
OpenGLES
照片
QuartzCore
安全
StoreKit
SystemConfiguration
UIKit
此外,为了向后兼容,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-sim
mac-sim
win32-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 进行测试。