Migrate android providers to use BuiltinProvider instead of NativeProvider

RELNOTES: None.
PiperOrigin-RevId: 200096226
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java b/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java
index bb12ae3..b880c97 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.NativeProvider.NativeKey;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
 import javax.annotation.Nullable;
 
 /**
@@ -88,4 +89,13 @@
   public void repr(SkylarkPrinter printer) {
     printer.append("<function " + getPrintableName() + ">");
   }
+
+  /**
+   * Convenience method for subclasses of this class to throw a consistent error when
+   * a provider is unable to be constructed from skylark.
+   */
+  protected T throwUnsupportedConstructorException(Location loc) throws EvalException {
+    throw new EvalException(
+        loc, String.format("'%s' cannot be constructed from Skylark", getPrintableName()));
+  }
 }