bazelbuild / bazelbuild/rules_android
MethodTooLargeException() during Android resources merging in (auto-generated) large project
- 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
Assessment
This issue has not been assessed yet.