Android Bazel Roadmap

This document describes the major release milestones for the Android Bazel Rules. There are three major pillars that we are focused on when developing the Android rules - Performance, Features, and Developer Experience - and for each milestone we list the main items for each pillar. Progress on each item is tracked via an issue.

If you have feedback on this roadmap (including feature and reprioritization requests) please open an issue or comment on the existing one.

Rules Alpha (est. mid 2019)

The primary goal of the Rules Alpha release is to start collecting feedback from projects and developers that are interested in being early adopters of the rules. Our intention is for Rules Alpha to be a 1:1 identical drop-in replacement for the native Android rules, although undoubtedly there will be missing features and we cannot always guarantee 100% backwards compatibility.

Performance

  • Use AAPT2 for resource processing
  • Use D8 for Dexing

Features

  • Support android_instrumentation_test on macOS
  • Support building and testing on Google Cloud Platform Remote Build Execution
  • Support new Android App Bundle format
  • Accept APKs directly into android_instrumentation_test
  • Simplified package and dependency management
  • Improve Kotlin interoperability
  • Integration with Bazel's platforms and toolchains support
  • Modern and correct NDK support

Developer Experience

  • Documentation for Android with Bazel compatibility across Windows, macOS, Linux
  • Documentation for Android with Bazel compatibility across Android Studio versions
  • Stable and reliable CI
  • NDK documentation and samples

Rules Beta (est. late 2019)

The goal for the Rules Beta release is to provide a stable, (mostly) feature complete version of the rules for all developers and projects. We intend the Rules Beta release to be the first version of the rules to be broadly adopted, and will comply with Bazel's backwards compatibility guarantees.

Performance

  • Improve resource processing speed and incrementality
  • Decouple Java compilation from R.class generation
  • Launch Bazel mobile-install v2

Features

  • New android_application rule for app packaging / sourceless binary / android_application
  • Improved support for AAR creation
  • Support Databinding 3.4.0 (v2)
  • Support bazel coverage for all test rules
  • Integration with Android Lint

Developer Experience

  • Document best practices
  • Best in class tutorials and migration guides