本指南概述了 Solar2D 应用的各种高级构建选项。
本指南适用于需要更专业的配置选项和自定义应用设置的用户。如果您正在寻找通用/基本构建设置和选项,请参阅项目构建设置指南。
如果您希望将 iOS 应用限制在具有特定功能的设备上,可以在iphone
→ plist
UIRequiredDeviceCapabilities
键。此键的值应该是一个包含与 Apple 文档匹配的特定键的表。例如:
settings = { iphone = { plist = { UIRequiredDeviceCapabilities = { ["gyroscope"] = true, }, }, }, }
在 UIRequiredDeviceCapabilities
表中包含特定键时,其值应为布尔值,逻辑如下:
true
— 设备必须具备关联功能才能运行应用。false
— 设备不得具备关联功能才能运行应用。仅当您绝对必须限制应用的目标设备时,才应包含特定键 — 如果设备是否支持某种功能无关紧要,请省略其键。
省略键的值将产生与将其设置为 true
相同的结果。例如,以下两者等效:
UIRequiredDeviceCapabilities = { "gyroscope" }
UIRequiredDeviceCapabilities = { ["gyroscope"] = true }
如果您需要在构建时绕过 PNG 文件处理 (pngcrush
),可以包含值为 true
的 skipPNGCrush
键。此键应在 plist
表之外但在 iphone
表之内指定。
settings = { iphone = { plist = { }, skipPNGCrush = true, }, }
如果您想在 xassets 项目中包含备用图标,请使用 alternateIcons
并包含图标名称数组。仅在 Solar2D Sim 2023.3692+ 中可用。
settings = { iphone = { plist = { }, xcassets = "Images.xcassets", alternateIcons = {"Icon1", "Icon2"}, }, }
使用 minSdkVersion
键值提供最低 SDK 版本允许您将应用排除在安装在具有较旧版本 Android 操作系统的设备上。它对应于此处详细介绍的 minSdkVersion
项。此设置对用户不可见。
settings = { android = { minSdkVersion = "16", }, }
最低 SDK 版本必须指定为整数 — 它不能包含任何小数点。
对于 Android 4.0.3(Solar2D 支持的最旧版本),Solar2D 仅允许最低值为 "15"
。有关各种 Android SDK 版本和 API 级别的详细信息,请参阅此处。
如果未另行指定,则最低 SDK 版本默认为 "15"
。
如果您要将应用部署到 Android TV,则应包含值为 true
的 supportsTV
键。这将使 Android TV 设备可以通过 Google Play 购买该应用。
此外,您可以将 isGame
键设置为 true
将应用归类到 Google Play 的游戏部分。如果省略此键或将其设置为 false
,则该应用将归类到应用部分。
settings = { android = { supportsTV = true, isGame = true, }, }
可选的 supportsScreens
表指定/限制 Android 应用支持的屏幕。有关详细说明和更多选项,请参阅 Android 文档。
settings = { android = { supportsScreens = { smallScreens = true, normalScreens = true, largeScreens = true, xlargeScreens = false, requiresSmallestWidthDp = 320, }, }, }
默认情况下,其他应用被授予content://
URL 访问您的应用文件的权限。这是将应用文件附加到build.settings
文件中设置以下内容:
settings = { android = { allowAppsReadOnlyAccessToFiles = false, }, }
您无法阻止已获得 root 权限的 Android 设备上的文件访问。这适用于所有 Android 应用,包括未用 Solar2D 构建的应用。因此,如果您的应用文件包含任何敏感信息,建议您自行加密这些信息。
您可以通过添加值为 `true` 的 `largeHeap` 键来请求 Android 操作系统为您的应用提供更多 Java 堆内存。例如,它可能会将特定设备上的最大堆大小从 32 MB 提高到 256 MB。如果您的应用在
settings = { android = { largeHeap = true, }, }
本节详细介绍了可用于
以下专用指令可用于
settings = { android = { strings = { permdesc = "Custom permission description", permlabel = "custom-permission-Label", }, }, }
settings = { android = { permissions = { { name = ".PERMISSION1", description = "@string/permdesc", icon = "@mipmap/icon", label = "@string/permlabel", permissionGroup = "android.permission-group.COST_MONEY", protectionLevel = "normal", }, }, }, }
settings = { android = { manifestChildElements = { -- Array of strings [[ <uses-configuration android:reqFiveWayNav="true" /> ]], }, }, }
settings = { android = { applicationChildElements = { -- Array of strings [[ <activity android:name="com.example.MyActivity" android:configChanges="keyboard|keyboardHidden"/> ]], }, }, }
`google-play-services.json`
settings = { android = { apkFiles = { "google-play-services.json", "res/raw/mypage.html", }, }, }
Solar2D 将以下属性用于自身目的,并且不能覆盖它们
属性 | |
---|---|
android:configChanges |
|
android:label |
|
android:launchMode |
|
android:name |
|
android:screenOrientation |
|
android:theme |
settings = { android = { coronaActivityFlags = { resizeableActivity = true, persistableMode = "persistRootOnly", }, }, }
如有必要,您可以微调插件以仅在特定平台上受支持。这是通过包含一个 `supportedPlatforms` 表来完成的,其中包含
["plugin.gpgs"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true }, },
在此表中,允许使用以下键
键 | 平台 |
---|---|
iphone |
所有 iOS 设备 |
android |
所有 Android 设备 |
appletvos |
Apple TV |
macos |
macOS 桌面 |
win32 |
Windows 桌面 |
["android-kindle"] |
Amazon Kindle |
["iphone-sim"] |
Xcode iOS 模拟器 |
省略 `supportedPlatforms` 表实际上会在其本身支持的所有平台上包含该插件。
您可以将版本设置为与Solar2D 免费插件目录上插件版本的 GitHub 标签名称相同。例如,此处提供可用版本的插件。请注意,这需要 Solar2D 3676+。
plugins = { ["com.coronalabs-CoronaProvider.native.popup.activity"] = { publisherId = "com.coronalabs", version = "v3", }, },
通常,应用程序的分发版本(用于应用商店的版本)会从编译代码中删除 Lua 调试信息,而开发版本则不会删除。通常,对于分发版本,最好删除调试符号,因为它可以减小应用程序大小并提供少量性能提升,但这完全取决于应用程序的类型以及您希望如何进行错误报告。
在 iOS 中,分发版本是通过使用名称包含 **iPhone 分发:** 的配置文件来生成的,而在 Android 中,它们是通过使用除 **Debug** 之外的任何名称的密钥库来生成的。
有时,在应用程序的分发版本中提供调试符号可能很有用。这意味着您可以在堆栈跟踪和运行时错误消息中获得更多详细信息。根据您的需要,可以使用 `neverStripDebugInfo` 设置完全关闭调试符号剥离。理论上,没有理由不能将使用此设置构建的应用程序提交到应用商店,但策略各不相同,并且无法保证 - 请注意,调试信息可能会泄露您可能希望保留专有的应用程序详细信息。
settings = { build = { neverStripDebugInfo = true, }, }