Optimize getJarJarRuleText

getJarJarRuleText accounted for 10% of all allocations in Soong totalling
10 GB due to repeated string growth.  Use a StringBuilder instead.

Test: builds
Change-Id: I4bce338d161cb2f9c0aba1036ced55d2e8ee6b14
diff --git a/java/base.go b/java/base.go
index d89c324..3a435a1 100644
--- a/java/base.go
+++ b/java/base.go
@@ -2948,14 +2948,18 @@
 // Get the jarjar rule text for a given provider for the fully resolved rules. Classes that map
 // to "" won't be in this list because they shouldn't be renamed yet.
 func getJarJarRuleText(provider *JarJarProviderData) string {
-	result := ""
+	result := strings.Builder{}
 	for _, orig := range android.SortedKeys(provider.Rename) {
 		renamed := provider.Rename[orig]
 		if renamed != "" {
-			result += "rule " + orig + " " + renamed + "\n"
+			result.WriteString("rule ")
+			result.WriteString(orig)
+			result.WriteString(" ")
+			result.WriteString(renamed)
+			result.WriteString("\n")
 		}
 	}
-	return result
+	return result.String()
 }
 
 // Repackage the flags if the jarjar rule txt for the flags is generated