Posted by Wojtek Kaliciński,
Boris Farber, Android
Developer Relations Engineers, and
Xavier Ducrohet, Android Studio
Tech Lead
To improve build speed and provide stable APIs, the Transform APIs will be
removed in Android Gradle plugin (AGP) version 8.0. Most use cases have
replacement APIs which are available starting from AGP version 7.2. Read on
for more details.
The Android developer community’s top request has been to improve build speed
while making sure Android Gradle plugin (AGP) has a solid, stable, and well
supported API.
To improve build speed starting from AGP 7.2, we have stabilized the
Artifacts API
and updated the
Instrumentation API. For common use cases, these APIs replace the
Transform APIs, which cause longer build times and are gone in AGP 8.0.
This article walks you through transitioning off the Transform APIs, whether
you’re working on a Gradle plugin or an application.
Guidance for Gradle plugins
To improve build times, we split Transform’s functionality into the following
APIs that are optimized for common use cases:
-
The
Instrumentation
API lets you transform and analyze compiled app classes using
ASM callbacks. For example
use this API to add custom traces to methods or classes for additional or
custom logging. -
The
Artifacts
API gives access to files or directories, whether temporary or final, that
are produced by AGP during the build. Use this API to: -
Add additional generated classes to the app, such as glue
code for dependency injection. -
Implement transformations based on whole program analysis, when all
classes can be transformed together in a single task. This is only
available starting from AGP 7.4.0-alpha06. The build.gradle.kts file
in the “modifyProjectClasses” Gradle recipe shows how to do it.
For examples of how to use the replacement APIs see the
Transform API update note, and our
Gradle recipes.
Guidance for apps
Make sure that you update your plugins to be AGP 8.0 compliant before updating
your app to AGP 8.0. If the relevant plugins are not compliant, please create
a bug that includes a link to this post and send it to the plugin authors.
Several commonly used plugins have already migrated to use these new APIs,
including the
Hilt Gradle plugin.
Share your feedback
If your use case is not covered by any of the new APIs, please
file a bug.
We encourage you to get started with making your plugins compatible with the
new AGP APIs. Getting started now means that you have enough time to
familiarize yourself with the APIs, share your feedback and then upgrade your
dependencies and plugins.