Version 1.0.5
Merge: Add a workaround for main dex building with duplicate classes
CL: https://r8-review.googlesource.com/c/r8/+/14980
Change-Id: I6bd7e4da69dfbbc449bd94b389573bd63fff7b75
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java b/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
index 819ce91..b5e1a49 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
@@ -197,6 +197,7 @@
internal.minimalMainDex = internal.debug;
internal.removeSwitchMaps = false;
internal.inlineAccessors = false;
+ internal.allowLibraryClassesToExtendProgramClasses = true;
return internal;
}
}
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 6d20eda..0849c7f 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "v1.0.4";
+ public static final String LABEL = "v1.0.5";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 870521d..fe2f063 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -504,7 +504,8 @@
Diagnostic message = new StringDiagnostic("Library class " + context.toSourceString()
+ (holder.isInterface() ? " implements " : " extends ")
+ "program class " + type.toSourceString());
- if (options.forceProguardCompatibility) {
+ if (options.forceProguardCompatibility
+ || options.allowLibraryClassesToExtendProgramClasses) {
options.reporter.warning(message);
} else {
options.reporter.error(message);
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 7bb23d4..fa32b89 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -169,6 +169,10 @@
public boolean disableAssertions = true;
public boolean debugKeepRules = false;
+ // TODO(72312389): android.jar contains parts of JUnit and most developers include JUnit in
+ // their programs, which can lead to library classes extending program classes.
+ public boolean allowLibraryClassesToExtendProgramClasses = false;
+
public boolean debug = false;
public final TestingOptions testing = new TestingOptions();