【问题标题】:How can I use Android's Navigation Architecture Component with Bazel?如何将 Android 的导航架构组件与 Bazel 一起使用?
【发布时间】:2019-07-24 02:41:20
【问题描述】:

我正在尝试使用导航架构组件更新旧的 Android 应用以使用现代单活动模型。我怎样才能用 Bazel 做到这一点?

我的应用已经使用 Bazel 构建,但看起来 Navigation 框架需要一个 gradle 插件: https://developer.android.com/jetpack/androidx/releases/navigation

我不清楚如何使用 Bazel 进行这项工作。

【问题讨论】:

    标签: android bazel


    【解决方案1】:

    使用导航不需要使用 Safe Args Gradle 插件(运行时本身不依赖于 Gradle 等)。根据Pass Data documentation,您可以使用 Bundles 作为替代方式传递参数。

    res/navigation 文件夹支持是 aapt2 的一部分。根据this Bazel issueaapt2 还不是 Bazel 的默认设置。根据linked commit

    今天要使用 aapt2 构建,请传递标志 --incompatible_use_aapt2_by_default=true--android_aapt=aapt2,或在您的 android_binaryandroid_local_test 目标上将 aapt_version 设置为 aapt2

    【讨论】:

    • 我尝试创建一个 res/navigation/navigation.xml 文件,但构建失败:资源目录名称无效:/tmp/resource_validator_tmp16830506611643002477/tmp-expanded/res 导航。我在 Bazel 构建中添加了对 navigation-runtime 和 navigation-fragment 2.0.0 库的依赖。
    • 我在我的回答中添加了一条关于 res/navigation 的注释,这是与 Gradle Plugin 事物不同的问题,并且与使用 aapt 而不是 aapt2 的 Bazel 相关(这是 Gradle 的默认设置)从 2017 年 11 月起)。
    • 谢谢你,伊恩。使用 aapt2 的标志修复了 res/navigation 问题。到目前为止没有其他构建问题。
    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2019-09-28
    • 2018-11-17
    • 2018-12-03
    • 1970-01-01
    • 2019-04-25
    • 2019-10-04
    相关资源
    最近更新 更多