Add policy for not merging resource classes
Bug: b/249180049
Change-Id: I7ffec0e6853c2389f91ca3ff5db4b8347c442b30
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyScheduler.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyScheduler.java
index a8dea77..b997f78 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyScheduler.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyScheduler.java
@@ -40,6 +40,7 @@
import com.android.tools.r8.horizontalclassmerging.policies.NoKeepRules;
import com.android.tools.r8.horizontalclassmerging.policies.NoKotlinMetadata;
import com.android.tools.r8.horizontalclassmerging.policies.NoNativeMethods;
+import com.android.tools.r8.horizontalclassmerging.policies.NoResourceClasses;
import com.android.tools.r8.horizontalclassmerging.policies.NoServiceLoaders;
import com.android.tools.r8.horizontalclassmerging.policies.NoVerticallyMergedClasses;
import com.android.tools.r8.horizontalclassmerging.policies.NoVirtualMethodMerging;
@@ -161,6 +162,7 @@
RuntimeTypeCheckInfo runtimeTypeCheckInfo,
ImmutableList.Builder<SingleClassPolicy> builder) {
builder.add(
+ new NoResourceClasses(),
new NotMatchedByNoHorizontalClassMerging(appView),
new NoAnnotationClasses(),
new NoDirectRuntimeTypeChecks(appView, mode, runtimeTypeCheckInfo),
@@ -180,6 +182,7 @@
ImmutableList.Builder<SingleClassPolicy> builder) {
List<SingleClassPolicy> policies =
ImmutableList.of(
+ new NoResourceClasses(),
new NoAnnotationClasses(),
new NoDirectRuntimeTypeChecks(appView, mode),
new NoEnums(appView),
@@ -197,6 +200,7 @@
AppView<AppInfo> appView, Mode mode, ImmutableList.Builder<SingleClassPolicy> builder) {
List<SingleClassPolicy> policies =
ImmutableList.of(
+ new NoResourceClasses(),
new NoAnnotationClasses(),
new NoDirectRuntimeTypeChecks(appView, mode),
new NoInterfaces(appView, mode),
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoResourceClasses.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoResourceClasses.java
new file mode 100644
index 0000000..acf1bce
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoResourceClasses.java
@@ -0,0 +1,21 @@
+// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.horizontalclassmerging.policies;
+
+import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.horizontalclassmerging.SingleClassPolicy;
+
+public class NoResourceClasses extends SingleClassPolicy {
+
+ @Override
+ public boolean canMerge(DexProgramClass program) {
+ return !program.getSimpleName().startsWith("R$");
+ }
+
+ @Override
+ public String getName() {
+ return "NoResourceClasses";
+ }
+}