ApiLevel of "" and "core_platform" is FutureApiLevel

If sdk_version is set to "", it means the module is built with the
in-development version of the platform APIs. "core_platform" means the
in-development version of the core Java APIs. In both cases, the API
level (i.e. which version to use) is the in-development version.

Bug:  1663140
Test: m

Change-Id: Ia184190341223e9ac12710a8bb3a25004fd4f539
diff --git a/android/sdk_version.go b/android/sdk_version.go
index 98db824..c6c75a3 100644
--- a/android/sdk_version.go
+++ b/android/sdk_version.go
@@ -147,6 +147,11 @@
 
 // UsePrebuilt determines whether prebuilt SDK should be used for this SdkSpec with the given context.
 func (s SdkSpec) UsePrebuilt(ctx EarlyModuleContext) bool {
+	switch s {
+	case SdkSpecNone, SdkSpecCorePlatform, SdkSpecPrivate:
+		return false
+	}
+
 	if s.ApiLevel.IsCurrent() {
 		// "current" can be built from source and be from prebuilt SDK
 		return ctx.Config().AlwaysUsePrebuiltSdks()
@@ -159,7 +164,6 @@
 		// numbered SDKs are always from prebuilt
 		return true
 	}
-	// "", "none", "core_platform" fall here
 	return false
 }
 
@@ -202,11 +206,9 @@
 }
 
 var (
-	SdkSpecNone = SdkSpec{SdkNone, NoneApiLevel, "(no version)"}
-	// TODO(b/175678607) ApiLevel of SdkSpecPrivate should be FutureApiLevel
-	SdkSpecPrivate = SdkSpec{SdkPrivate, NoneApiLevel, ""}
-	// TODO(b/175678607) ApiLevel of SdkSpecCorePlatform should be FutureApiLevel
-	SdkSpecCorePlatform = SdkSpec{SdkCorePlatform, NoneApiLevel, "core_platform"}
+	SdkSpecNone         = SdkSpec{SdkNone, NoneApiLevel, "(no version)"}
+	SdkSpecPrivate      = SdkSpec{SdkPrivate, FutureApiLevel, ""}
+	SdkSpecCorePlatform = SdkSpec{SdkCorePlatform, FutureApiLevel, "core_platform"}
 )
 
 func SdkSpecFrom(ctx EarlyModuleContext, str string) SdkSpec {