Skip to content

Commit 0565a93

Browse files
asteinbCopybara-Service
authored andcommitted
Only make AndroidDataConverters statically
Apparently, making one for each target creates memory issues. RELNOTES: none PiperOrigin-RevId: 196275764
1 parent 6b0ccd1 commit 0565a93

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ public String map(T t) {
108108
.collect(Collectors.joining(joinerType.itemSeparator));
109109
}
110110

111+
/**
112+
* Creates a builder for a new {@link AndroidDataConverter}.
113+
*
114+
* <p>Because of how Bazel handles these objects, call this method *only* as part of creating a
115+
* static final field.
116+
*/
111117
public static <T> Builder<T> builder(JoinerType joinerType) {
112118
return new Builder<>(joinerType);
113119
}

src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@
3333
/** Builds up the spawn action for $android_rclass_generator. */
3434
public class RClassGeneratorActionBuilder {
3535

36+
private static final AndroidDataConverter<ValidatedAndroidData> AAPT_CONVERTER =
37+
AndroidDataConverter.<ValidatedAndroidData>builder(JoinerType.COLON_COMMA)
38+
.with(chooseDepsToArg(AndroidAaptVersion.AAPT))
39+
.build();
40+
private static final AndroidDataConverter<ValidatedAndroidData> AAPT2_CONVERTER =
41+
AndroidDataConverter.<ValidatedAndroidData>builder(JoinerType.COLON_COMMA)
42+
.with(chooseDepsToArg(AndroidAaptVersion.AAPT2))
43+
.build();
44+
3645
private final RuleContext ruleContext;
3746
private ResourceDependencies dependencies;
3847

@@ -98,10 +107,7 @@ private void build(Artifact rTxt, ProcessedAndroidManifest manifest) {
98107
builder.addAll(
99108
VectorArg.addBefore("--library")
100109
.each(dependencies.getResourceContainers())
101-
.mapped(
102-
AndroidDataConverter.<ValidatedAndroidData>builder(JoinerType.COLON_COMMA)
103-
.with(chooseDepsToArg(version))
104-
.build()));
110+
.mapped(version == AndroidAaptVersion.AAPT2 ? AAPT2_CONVERTER : AAPT_CONVERTER));
105111
if (version == AndroidAaptVersion.AAPT2) {
106112
inputs.addTransitive(dependencies.getTransitiveAapt2RTxt());
107113
} else {

0 commit comments

Comments
 (0)