使用bazelrc场景
当您的构建需要几个选项时,您可以创建一个 bazelrc 文件并使用它来将配置选项传递给您的构建。bazelrc 是一个名为 .bazelrc 的隐藏文件。您可以在该文件中提供构建选项,这些选项将应用于所有构建,但您也可以为不同的配置指定标志。这样,您可以在构建时选择配置。【When you have a build that takes a few options, you create a bazelrc file and use it to pass configuration options to your build. The bazelrc is a hidden file called .bazelrc. You can provide your build options in that file which will be applied to all build but you can also designate flags for different configurations. That way, you can choose a configuration at build time.】
Finally, we run the build using the dex configuration.
bazel build //Bullseye-Android/app/src:yourfirstapp --config=dex
Mind you, you can do other things with the bazelrc files such as specify startup options, you can import other rc files, and so forth. For more information, see the documentation.
.bazelrc 位置查找
Bazel 在三个不同的位置查找 .bazelrc。首先,在 macOS、linux 和其他 unix 变体上,它将在 etc 目录中搜索。在 windows 上,它会在 ProgramData 中搜索,下一个位置是工作区目录中,就在工作区旁边。最后一个位置是在基于 unix 的系统上的主文件夹中,以及在 windows 上的用户配置文件目录中。或者,您也可以传递一个 bazelrc 文件。【Bazel looks for the .bazelrc in three different locations. First, on macOS, linux and other unix variants, it will search in the etc directory. On windows, it searches in the ProgramData. The next place is in your workspace directory right next to your workspace. The final place is in your home folder on unix based systems and in your user profile directory on windows. Alternatively, you can also pass in a bazelrc file.】
创建一个 .bazelrc 文件
要开始,请导航到您的工作区文件。创建一个 .bazelrc 文件。我们首先将标志添加到构建文件本身。
添加以下内容:
build --define=android_dexmerger_tool=d8_dexmerger
build --nouse_workers_with_dexbuilder
【To get started, navigate to your workspace file. Create an .bazelrc file. We’ll first add our flags to the build file itself.
Add the following:
build --define=android_dexmerger_tool=d8_dexmerger
build --nouse_workers_with_dexbuilder
】
构建应用程序
现在让我们尝试一下。构建应用程序。
bazel build //Bullseye-Android/app/src:yourfirstapp
使用 config 标志传入配置
这次我们的构建运行良好,因为添加了所有标志。但这适用于 monorepo 中的所有构建,因此这些标志在构建 iOS 应用程序时没有多大意义。相反,我们可以将其传递给 bazelrc 文件。将 bazelrc 更新为以下内容:
build:dex --define=android_dexmerger_tool=d8_dexmerger
build:dex --nouse_workers_with_dexbuilder
bazel build //Bullseye-Android/app/src:yourfirstapp
【This time our build runs fine because all the flags are added. But this is true for all the builds in the monorepo so these flags don’t make much sense when building an iOS app.
Instead, we can pass it to the bazelrc file. Update bazelrc to the following:
】
现在我们创建了一个 dex 配置。要运行它,我们只需使用 config 标志传入配置。为了显示配置文件正在使用,让我们清理构建
【Now we’ve create a dex configuration. To run it, we simply pass in the configuration using the config flag. To show that the config file is being used, lets clean the build.】
bazel clean
关于 bazel clean 的说明。每次运行构建时,Bazel 都会分析代码,查找任何更改。然后它会编译受影响的目标。这意味着,您几乎不需要进行清理。事实上,您只会增加编译时间。
【Just a note about bazel clean. Each time you run your build, Bazel will analyze your code, looking for any changes. It will then compile those affected targets. This means, you will rarely ever need to do a clean. In fact, you’ll only be increasing your compile times.】
最后,我们使用 dex 配置运行构建。
bazel build //Bullseye-Android/app/src:yourfirstapp --config=dex
请注意,您可以使用 bazelrc 文件执行其他操作,例如指定启动选项,您可以导入其他 rc 文件等等。有关更多信息,请参阅文档。