---
title: Defold 项目构建器手册
brief: Bob 是用于构建 Defold 项目的命令行工具。本手册详述如何使用这个工具。
---
# 构建器 Bob
Bob 是一个命令行工具,用于在正常编辑器工作流程之外构建 Defold 项目。
Bob 能够构建数据(对应于选择编辑器菜单项 Project ▸ Build 的构建步骤),创建数据存档,并创建独立的、可分发的应用程序包(对应于编辑器菜单项 Project ▸ Bundle ▸ ... 选项)。
Bob 作为 Java _JAR_ 存档分发,其中包含构建所需的一切。您可以在 [GitHub 发布页面](https://github.com/defold/defold/releases) 上找到最新的 *bob.jar* 分发版本。选择一个发布版本,然后下载 *bob/bob.jar*。如果您使用的是 Defold 1.9.6,您将需要 OpenJDK 21 来运行它。对于旧版本的 Defold,您将需要 OpenJDK 17 或 11。
兼容的 OpenJDK 21 镜像(从 Defold 1.9.6 开始):
* [Microsoft 提供的 OpenJDK 21](https://docs.microsoft.com/en-us/java/openjdk/download#openjdk-21)
* [Adoptium 工作组提供的 OpenJDK 21](https://github.com/adoptium/temurin21-binaries/releases) / [Adoptium.net](https://adoptium.net/)
如果您在 Windows 上,您需要 OpenJDK 的 `.msi` 文件安装程序。
## 用法
Bob 通过在 shell 或命令行中调用 `java`(在 Windows 上是 `java.exe`)并提供 bob java 存档作为参数来运行:
```text
$ java -jar bob.jar --help
usage: bob [options] [commands]
-a,--archive Build archive
-ar,--architectures Comma separated list of
architectures to include for the
platform
--archive-resource-padding The alignment of the resources in
the game archive. Default is 4
-bf,--bundle-format Which formats to create the
application bundle in. Comma
separated list. (Android: 'apk'
and 'aab')
--binary-output Location where built engine
binary will be placed. Default is
"//"
-bo,--bundle-output Bundle output directory
-br,--build-report DEPRECATED! Use
--build-report-json instead
-brhtml,--build-report-html Filepath where to save a build
report as HTML
-brjson,--build-report-json Filepath where to save a build
report as JSON
--build-artifacts If left out, will default to
build the engine. Choices:
'engine', 'plugins', 'library'.
Comma separated list.
--build-server The build server (when using
native extensions)
--build-server-header Additional build server header to
set
-ce,--certificate DEPRECATED! Use --keystore
instead
-d,--debug DEPRECATED! Use --variant=debug
instead
--debug-ne-upload Outputs the files sent to build
server as upload.zip
--debug-output-spirv Force build SPIR-V shaders
--debug-output-wgsl Force build WGSL shaders
--defoldsdk What version of the defold sdk
(sha1) to use
-e,--email User email
-ea,--exclude-archive Exclude resource archives from
application bundle. Use this to
create an empty Defold
application for use as a build
target
--exclude-build-folder DEPRECATED! Use '.defignore' file
instead
-h,--help This help message
-i,--input DEPRECATED! Use --root instead
--identity Sign identity (iOS)
-kp,--key-pass Password of the deployment key if
different from the keystore
password (Android)
-ks,--keystore Deployment keystore used to sign
APKs (Android)
-ksa,--keystore-alias The alias of the signing key+cert
you want to use (Android)
-ksp,--keystore-pass Password of the deployment
keystore (Android)
-l,--liveupdate Yes if liveupdate content should
be published
--manifest-private-key Private key to use when signing
manifest and archive.
--manifest-public-key Public key to use when signing
manifest and archive.
--max-cpu-threads Max count of threads that bob.jar
can use
-mp,--mobileprovisioning mobileprovisioning profile (iOS)
--ne-build-dir Specify a folder with includes or
source, to build a specific
library. More than one occurrance
is allowed.
--ne-output-name Specify a library target name
-o,--output Output directory. Default is
"build/default"
-p,--platform Platform (when building and
bundling)
-pk,--private-key DEPRECATED! Use --keystore
instead
-r,--root Build root directory. Default is
current directory
--resource-cache-local Path to local resource cache.
--resource-cache-remote URL to remote resource cache.
--resource-cache-remote-pass Password/token to authenticate
access to the remote resource
cache.
--resource-cache-remote-user Username to authenticate access
to the remote resource cache.
--settings Path to a game project settings
file. More than one occurrance is
allowed. The settings files are
applied left to right.
--strip-executable Strip the dmengine of debug
symbols (when bundling iOS or
Android)
-tc,--texture-compression Use texture compression as
specified in texture profiles
-tp,--texture-profiles DEPRECATED! Use
--texture-compression instead
-u,--auth User auth token
--use-async-build-server DEPRECATED! Asynchronous build is
now the default.
--use-lua-bytecode-delta Use byte code delta compression
when building for multiple
architectures
--use-uncompressed-lua-source Use uncompressed and unencrypted
Lua source code instead of byte
code
--use-vanilla-lua DEPRECATED! Use
--use-uncompressed-lua-source
instead.
-v,--verbose Verbose output
--variant Specify debug, release or
headless version of dmengine
(when bundling)
--version Prints the version number to the
output
--with-symbols Generate the symbol file (if
applicable)
```
可用命令:
`clean`
: 删除构建目录中已构建的文件。
`distclean`
: 删除构建目录中的所有文件。
`build`
: 构建所有项目数据。添加 `--archive` 选项以构建数据存档文件(构建目录中的 "`game.darc`")。
`bundle`
: 创建特定于平台的应用程序包。打包需要存在已构建的存档(使用 `--archive` 选项的 `build`)并指定目标平台(使用 `--platform` 选项)。除非使用 `--bundle-output` 选项指定不同的目录,否则 Bob 会在输出目录中创建包。包根据 *game.project* 中的项目名称设置命名。`--variant` 指定打包时构建哪种类型的可执行文件,它与 `--strip-executable` 选项一起取代了 `--debug` 选项。如果没有指定 `--variant`,您将获得引擎的发布版本(在 Android 和 iOS 上剥离符号)。将 `--variant` 设置为 debug 并省略 `--strip-executable` 会产生与 `--debug` 过去相同的可执行文件类型。
`resolve`
: 解析所有外部库依赖项。
可用平台和架构:
`x86_64-darwin` (Defold 1.3.5 及更早版本)
`x86_64-macos` (Defold 1.3.6 及更新版本)
: macOS 64 位
`arm64-macos` (Defold 1.5.0 及更早版本)
: macOS Apple Silicon (ARM)
`x86_64-win32`
: Windows 64 位
`x86-win32`
: Windows 32 位
`x86_64-linux`
: Linux 64 位
`x86_64-ios`
: iOS macOS 64 位 (iOS 模拟器)
`armv7-darwin` (Defold 1.3.5 及更早版本)
`armv7-ios` (Defold 1.3.6 及更新版本)
: iOS,具有可用的 32 位 `armv7-darwin` 和 64 位 `arm64-darwin` 架构。默认情况下,`--architectures` 参数值为 `armv7-darwin,arm64-darwin`。
`armv7-android`
: Android,具有可用的 32 位 `armv7-android` 和 64 位 `arm64-android` 架构。默认情况下,`--architectures` 参数值为 `armv7-android,arm64-android`。
`js-web`
: HTML5,具有可用的 `js-web` 和 `wasm-web` 架构。默认情况下,`--architectures` 参数值为 `js-web,wasm-web`。
默认情况下,Bob 在当前目录中寻找要构建的项目。如果您将当前目录更改为 Defold 项目并调用 bob,它将在默认输出目录 *build/default* 中构建项目的数据。
```sh
$ cd /Applications/Defold-beta/branches/14/4/main
$ java -jar bob.jar
100%
$
```
您可以将命令串联在一起以一次性执行一系列任务。以下示例解析库,清除构建目录,构建存档数据并将 macOS 应用程序捆绑(命名为 *My Game.app*):
```sh
$ java -jar bob.jar --archive --platform x86-darwin resolve distclean build bundle
100%
$ ls -al build/default/
total 70784
drwxr-xr-x 13 sicher staff 442 1 Dec 10:15 .
drwxr-xr-x 3 sicher staff 102 1 Dec 10:15 ..
drwxr-xr-x 3 sicher staff 102 1 Dec 10:15 My Game.app
drwxr-xr-x 8 sicher staff 272 1 Dec 10:15 builtins
-rw-r--r-- 1 sicher staff 140459 1 Dec 10:15 digest_cache
drwxr-xr-x 4 sicher staff 136 1 Dec 10:15 fonts
-rw-r--r-- 1 sicher staff 35956340 1 Dec 10:15 game.darc
-rw-r--r-- 1 sicher staff 735 1 Dec 10:15 game.projectc
drwxr-xr-x 223 sicher staff 7582 1 Dec 10:15 graphics
drwxr-xr-x 3 sicher staff 102 1 Dec 10:15 input
drwxr-xr-x 20 sicher staff 680 1 Dec 10:15 logic
drwxr-xr-x 27 sicher staff 918 1 Dec 10:15 sound
-rw-r--r-- 1 sicher staff 131926 1 Dec 10:15 state
$
```