This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
扩展清单是一个配置文件,包含用于构建单个扩展的标志和定义。此配置与应用级配置和Defold引擎本身的基础级配置相结合。
应用清单(文件扩展名.appmanifest
)是关于如何在构建服务器上构建游戏的应用级配置。应用清单允许您移除引擎中不使用的部分。如果您不需要物理引擎,可以从可执行文件中移除它以减小其大小。了解如何排除未使用的功能,请参阅应用清单手册。
Defold引擎有一个构建清单(build.yml
),它包含在引擎和Defold SDK的每个版本中。该清单控制使用哪些SDK版本,运行哪些编译器、链接器和其他工具,以及向这些工具传递哪些默认构建和链接标志。该清单可以在GitHub上的share/extender/build_input.yml中找到在GitHub上。
另一方面,扩展清单(ext.manifest
)是专门针对扩展的配置文件。扩展清单控制扩展的源代码如何编译和链接,以及包含哪些额外的库。
这三种不同的清单文件都共享相同的语法,以便它们可以合并并完全控制扩展和游戏的构建方式。
对于每个构建的扩展,清单按以下方式合并:
manifest = merge(game.appmanifest, ext.manifest, build.yml)
这允许用户覆盖引擎的默认行为以及每个扩展的行为。而且,在最终的链接阶段,我们将应用清单与defold清单合并:
manifest = merge(game.appmanifest, build.yml)
除了扩展名称外,清单文件还可以包含特定于平台的编译标志、链接标志、库和框架。如果ext.manifest文件不包含”platforms”部分,或者列表中缺少某个平台,您为其打包的平台仍将构建,但不会设置任何额外的标志。
以下是一个示例:
name: "AdExtension"
platforms:
arm64-ios:
context:
frameworks: ["CoreGraphics", "CFNetwork", "GLKit", "CoreMotion", "MessageUI", "MediaPlayer", "StoreKit", "MobileCoreServices", "AdSupport", "AudioToolbox", "AVFoundation", "CoreGraphics", "CoreMedia", "CoreMotion", "CoreTelephony", "CoreVideo", "Foundation", "GLKit", "JavaScriptCore", "MediaPlayer", "MessageUI", "MobileCoreServices", "OpenGLES", "SafariServices", "StoreKit", "SystemConfiguration", "UIKit", "WebKit"]
flags: ["-stdlib=libc++"]
linkFlags: ["-ObjC"]
libs: ["z", "c++", "sqlite3"]
defines: ["MY_DEFINE"]
armv7-ios:
context:
frameworks: ["CoreGraphics", "CFNetwork", "GLKit", "CoreMotion", "MessageUI", "MediaPlayer", "StoreKit", "MobileCoreServices", "AdSupport", "AudioToolbox", "AVFoundation", "CoreGraphics", "CoreMedia", "CoreMotion", "CoreTelephony", "CoreVideo", "Foundation", "GLKit", "JavaScriptCore", "MediaPlayer", "MessageUI", "MobileCoreServices", "OpenGLES", "SafariServices", "StoreKit", "SystemConfiguration", "UIKit", "WebKit"]
flags: ["-stdlib=libc++"]
linkFlags: ["-ObjC"]
libs: ["z", "c++", "sqlite3"]
defines: ["MY_DEFINE"]
特定于平台的编译标志允许的键有:
frameworks
- 构建时要包含的Apple框架(iOS和macOS)weakFrameworks
- 构建时可选包含的Apple框架(iOS和macOS)flags
- 应传递给编译器的标志linkFlags
- 应传递给链接器的标志libs
- 链接时要包含的额外库defines
- 构建时要设置的定义aaptExtraPackages
- 应生成的额外包名(Android)aaptExcludePackages
- 要排除的包的正则表达式(或确切名称)(Android)aaptExcludeResourceDirs
- 要排除的资源目录的正则表达式(或确切名称)(Android)excludeLibs
, excludeJars
, excludeSymbols
- 这些标志用于移除平台上下文中先前定义的内容。对于所有关键字,我们应用白名单过滤器。这是为了避免非法路径处理和访问构建上传文件夹之外的文件。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB