Manuals
Manuals




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文件

除了扩展名称外,清单文件还可以包含特定于平台的编译标志、链接标志、库和框架。如果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 - 这些标志用于移除平台上下文中先前定义的内容。

对于所有关键字,我们应用白名单过滤器。这是为了避免非法路径处理和访问构建上传文件夹之外的文件。