Closed
Conversation
This cl introduces R8 support in Bazel for proguarding and dexing. R8 is enabled by passing --experimental_enable_r8=true to the blaze build invocation and --proguard_top="//bzl/r8:proguard_compat" When enabled the build graph was changed from - jar -> proguard -> dex -> apk To - jar -> r8 -> apk I.e R8 takes care of proguarding and dexing. There are a few known limitations: - Only native multidex (Android version L+) is supported. All android_binary targets declare native_multidex so it does not make sense to implement legacy multidex with R8 - Mobile-Install is not supported: mobile-install relies on how dexes are shard. R8 dexes the deploy jar in a single monolithic action which is cant be done incrementally (I don't think mobile-install is supported anymore) - Other features which are not implemented in bazel at the moment: e.g. dynamic delivery - proguard_compat needs to be available (not in this commit) --- Automatic squash commit from https://github.sc-corp.net/Snapchat/bazel/pull/145 Cooled by mgalindo
Contributor
|
@mauriciogg Why is it better to pass R8 via the proguard_top flag rather than changing how AndroidBinary works? That is why not implement something like applyR8 instead of applyProguard? |
Contributor
Author
Technically this code is being deprecated so I wouldnt want to add modifications to android binary, besides this just works out of the box with the rest of the toolchain. The only extra piece needed is a shim binary that translates between proguard args and r8 args. This is very unlikely to get merge though. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This cl introduces R8 support in Bazel for proguarding and dexing.
R8 is enabled by passing --experimental_enable_r8=true to the
blaze build invocation and --proguard_top="//bzl/r8:proguard_compat"
When enabled the build graph was changed from
To
I.e R8 takes care of proguarding and dexing.
There are a few known limitations:
All android_binary targets declare native_multidex so it does not
make sense to implement legacy multidex with R8
are shard. R8 dexes the deploy jar in a single monolithic action
which is cant be done incrementally (I don't think mobile-install is
supported anymore)
e.g. dynamic delivery
see bazelbuild/rules_android#31