bazelbuild / bazelbuild/rules_android

MethodTooLargeException() during Android resources merging in (auto-generated) large project

Open
#33 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
203
Forks
95
PR merge metrics
No merged PRs in 30d

Description

While benchmarking Bazel build times against auto-generated large projects, we ran into this error in Bazel android rules that occur during resources merging. Note that Gradle (and Buck) handle these projects resources properly. Confirmed issue occurs on latest Bazel version too (3.7.2)

Repro:
1. Unzip [project.zip](https://github.com/bazelbuild/rules_android/files/5743835/project.zip)
2. cd mobile_app1
3. bazel build rootModule

Result:
Exception in thread "main" org.objectweb.asm.MethodTooLargeException: Method too large: com/rootModule/R$id. ()V
at org.objectweb.asm.MethodWriter.computeMethodInfoSize(MethodWriter.java:2089)
at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:458)
at com.google.devtools.build.android.resources.RClassGenerator.writeInnerClass(RClassGenerator.java:157)
at com.google.devtools.build.android.resources.RClassGenerator.writeClasses(RClassGenerator.java:123)
at com.google.devtools.build.android.resources.RClassGenerator.write(RClassGenerator.java:75)
at com.google.devtools.build.android.AndroidResourceClassWriter.writeAsClass(AndroidResourceClassWriter.java:109)
at com.google.devtools.build.android.AndroidResourceClassWriter.flush(AndroidResourceClassWriter.java:93)
at com.google.devtools.build.android.UnwrittenMergedAndroidData.writeResourceClass(UnwrittenMergedAndroidData.java:91)
at com.google.devtools.build.android.AndroidResourceMerger.mergeDataAndWrite(AndroidResourceMerger.java:197)
at com.google.devtools.build.android.AndroidResourceMerger.mergeDataAndWrite(AndroidResourceMerger.java:142)
at com.google.devtools.build.android.AndroidResourceMergingAction.main(AndroidResourceMergingAction.java:257)
at com.google.devtools.build.android.ResourceProcessorBusyBox$Tool$6.call(ResourceProcessorBusyBox.java:96)
at com.google.devtools.build.android.ResourceProcessorBusyBox.processRequest(ResourceProcessorBusyBox.java:243)
at com.google.devtools.build.android.ResourceProcessorBusyBox.runPersistentWorker(ResourceProcessorBusyBox.java:217)
at com.google.devtools.build.android.ResourceProcessorBusyBox.main(ResourceProcessorBusyBox.java:202)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.