【发布时间】:2019-07-24 02:41:20
【问题描述】:
我正在尝试使用导航架构组件更新旧的 Android 应用以使用现代单活动模型。我怎样才能用 Bazel 做到这一点?
我的应用已经使用 Bazel 构建,但看起来 Navigation 框架需要一个 gradle 插件: https://developer.android.com/jetpack/androidx/releases/navigation
我不清楚如何使用 Bazel 进行这项工作。
【问题讨论】:
我正在尝试使用导航架构组件更新旧的 Android 应用以使用现代单活动模型。我怎样才能用 Bazel 做到这一点?
我的应用已经使用 Bazel 构建,但看起来 Navigation 框架需要一个 gradle 插件: https://developer.android.com/jetpack/androidx/releases/navigation
我不清楚如何使用 Bazel 进行这项工作。
【问题讨论】:
使用导航不需要使用 Safe Args Gradle 插件(运行时本身不依赖于 Gradle 等)。根据Pass Data documentation,您可以使用 Bundles 作为替代方式传递参数。
res/navigation 文件夹支持是 aapt2 的一部分。根据this Bazel issue,aapt2 还不是 Bazel 的默认设置。根据linked commit:
今天要使用 aapt2 构建,请传递标志
--incompatible_use_aapt2_by_default=true或--android_aapt=aapt2,或在您的android_binary或android_local_test目标上将aapt_version设置为aapt2。
【讨论】:
res/navigation 的注释,这是与 Gradle Plugin 事物不同的问题,并且与使用 aapt 而不是 aapt2 的 Bazel 相关(这是 Gradle 的默认设置)从 2017 年 11 月起)。