diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index 63bf4f5..acbc9bd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -477,7 +477,12 @@
             .setToolchainContext(toolchainContext)
             .setConstraintSemantics(ruleClassProvider.getConstraintSemantics())
             .build();
-    if (ruleContext.hasErrors()) {
+
+    // If allowing analysis failures, targets should be created as normal as possible, and errors
+    // will be propagated via a hook elsewhere as AnalysisFailureInfo.
+    boolean allowAnalysisFailures = ruleContext.getConfiguration().allowAnalysisFailures();
+
+    if (ruleContext.hasErrors() && !allowAnalysisFailures) {
       return null;
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index 910c5a9..d7dfa0f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -101,7 +101,7 @@
     if (ruleContext.getConfiguration().enforceConstraints()) {
       checkConstraints();
     }
-    if (ruleContext.hasErrors()) {
+    if (ruleContext.hasErrors() && !allowAnalysisFailures) {
       return null;
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 72549d1..e8a820c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -377,7 +377,7 @@
 
   @Override
   public boolean hasErrors() {
-    return getAnalysisEnvironment().hasErrors();
+    return reporter.hasErrors();
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
index 8eb173d..ab39d5e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
@@ -131,8 +131,9 @@
       Location location,
       Environment env)
       throws EvalException, InterruptedException {
-    try (SkylarkErrorReporter errorReporter =
-        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+    SkylarkErrorReporter errorReporter =
+        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
+    try {
       return AndroidAssets.from(
               errorReporter,
               listFromNoneable(assets, ConfiguredTarget.class),
@@ -143,7 +144,7 @@
               getAndroidAaptVersionForLibrary(ctx))
           .toProvider();
     } catch (RuleErrorException e) {
-      throw new EvalException(Location.BUILTIN, e);
+      throw handleRuleException(errorReporter, e);
     }
   }
 
@@ -158,8 +159,9 @@
       Location location,
       Environment env)
       throws EvalException, InterruptedException {
-    try (SkylarkErrorReporter errorReporter =
-        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+    SkylarkErrorReporter errorReporter =
+        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
+    try {
       return AndroidResources.from(errorReporter, getFileProviders(resources), "resources")
           .process(
               ctx,
@@ -169,7 +171,7 @@
                   enableDataBinding, ctx.getActionConstructionContext(), ctx.getAndroidConfig()),
               getAndroidAaptVersionForLibrary(ctx));
     } catch (RuleErrorException e) {
-      throw new EvalException(Location.BUILTIN, e);
+      throw handleRuleException(errorReporter, e);
     }
   }
 
@@ -312,9 +314,10 @@
       Location location,
       Environment env)
       throws InterruptedException, EvalException {
-    try (SkylarkErrorReporter errorReporter =
-        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+    SkylarkErrorReporter errorReporter =
+        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
 
+    try {
       AndroidManifest rawManifest =
           AndroidManifest.from(
               ctx,
@@ -357,10 +360,19 @@
               resourceApk.toManifestInfo().get()));
       return SkylarkDict.copyOf(/* env = */ null, builder.build());
     } catch (RuleErrorException e) {
-      throw new EvalException(Location.BUILTIN, e);
+      throw handleRuleException(errorReporter, e);
     }
   }
 
+  private static IllegalStateException handleRuleException(
+      SkylarkErrorReporter errorReporter, RuleErrorException exception) throws EvalException {
+    // The error reporter should have been notified of the rule error, and thus closing it will
+    // throw an EvalException.
+    errorReporter.close();
+    // It's a catastrophic state error if the errorReporter did not pick up the error.
+    throw new IllegalStateException("Unhandled RuleErrorException", exception);
+  }
+
   @Override
   public BinaryDataSettings makeBinarySettings(
       AndroidDataContext ctx,
@@ -373,21 +385,23 @@
       Environment env)
       throws EvalException {
 
+    SkylarkErrorReporter errorReporter =
+        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
     AndroidAaptVersion aaptVersion;
-    try (SkylarkErrorReporter errorReporter =
-        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+
+    try {
       aaptVersion =
           AndroidAaptVersion.chooseTargetAaptVersion(ctx, errorReporter, aaptVersionString);
-    } catch (RuleErrorException e) {
-      throw new EvalException(Location.BUILTIN, e);
-    }
 
-    return new BinaryDataSettings(
-        aaptVersion,
-        fromNoneableOrDefault(
-            shrinkResources, Boolean.class, ctx.getAndroidConfig().useAndroidResourceShrinking()),
-        ResourceFilterFactory.from(aaptVersion, resourceConfigurationFilters, densities),
-        noCompressExtensions.getImmutableList());
+      return new BinaryDataSettings(
+          aaptVersion,
+          fromNoneableOrDefault(
+              shrinkResources, Boolean.class, ctx.getAndroidConfig().useAndroidResourceShrinking()),
+          ResourceFilterFactory.from(aaptVersion, resourceConfigurationFilters, densities),
+          noCompressExtensions.getImmutableList());
+    } catch (RuleErrorException e) {
+      throw handleRuleException(errorReporter, e);
+    }
   }
 
   @Override
@@ -447,9 +461,10 @@
       Location location,
       Environment env)
       throws InterruptedException, EvalException {
-    try (SkylarkErrorReporter errorReporter =
-        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+    SkylarkErrorReporter errorReporter =
+        SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
 
+    try {
       BinaryDataSettings settings =
           fromNoneableOrDefault(
               maybeSettings,
@@ -517,7 +532,7 @@
           resourceApk.toManifestInfo().get());
 
     } catch (RuleErrorException e) {
-      throw new EvalException(location, e);
+      throw handleRuleException(errorReporter, e);
     }
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
index 0c3cb4f..3ee601e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
@@ -94,7 +94,11 @@
                     /*ast=*/ null,
                     env);
 
-        if (ruleContext.hasErrors()) {
+        // If allowing analysis failures, targets should be created somewhat normally, and errors
+        // will be propagated via a hook elsewhere as AnalysisFailureInfo.
+        boolean allowAnalysisFailures = ruleContext.getConfiguration().allowAnalysisFailures();
+
+        if (ruleContext.hasErrors() && !allowAnalysisFailures) {
           return null;
         } else if (!(aspectSkylarkObject instanceof StructImpl)
             && !(aspectSkylarkObject instanceof Iterable)
