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";
+  }
+}