Version 2.1.73
Cherry pick (partial): Rewrite and prune AppServices in lock-step with AppInfoWithLiveness
CL: https://r8-review.googlesource.com/c/r8/+/54066
This cherry picks a fix from https://r8-review.googlesource.com/c/r8/+/54066 which fixes a NullPointerException in presence of missing service providers and feature splits.
Bug: 168827630
Change-Id: I00ca494e4a52e4a6e51b3b729a68e710118c2753
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index c57eb07..5c057db 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 = "2.1.72";
+ public static final String LABEL = "2.1.73";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/graph/AppServices.java b/src/main/java/com/android/tools/r8/graph/AppServices.java
index 0dbaa30..29e9041 100644
--- a/src/main/java/com/android/tools/r8/graph/AppServices.java
+++ b/src/main/java/com/android/tools/r8/graph/AppServices.java
@@ -89,12 +89,14 @@
}
// Check if service is defined feature
DexProgramClass serviceClass = appView.definitionForProgramType(serviceType);
- if (appView.options().featureSplitConfiguration.isInFeature(serviceClass)) {
+ if (serviceClass != null
+ && appView.options().featureSplitConfiguration.isInFeature(serviceClass)) {
return true;
}
- for (DexType dexType : featureImplementations.get(FeatureSplit.BASE)) {
- DexProgramClass implementationClass = appView.definitionForProgramType(dexType);
- if (appView.options().featureSplitConfiguration.isInFeature(implementationClass)) {
+ for (DexType implementationType : featureImplementations.get(FeatureSplit.BASE)) {
+ DexProgramClass implementationClass = appView.definitionForProgramType(implementationType);
+ if (implementationClass != null
+ && appView.options().featureSplitConfiguration.isInFeature(implementationClass)) {
return true;
}
}