diff --git a/java/java.go b/java/java.go
index b2fbc42..8312ecc 100644
--- a/java/java.go
+++ b/java/java.go
@@ -315,7 +315,7 @@
 
 func sdkStringToNumber(ctx android.BaseContext, v string) int {
 	switch v {
-	case "", "current", "system_current", "test_current":
+	case "", "current", "system_current", "test_current", "core_current":
 		return android.FutureApiLevel
 	default:
 		if i, err := strconv.Atoi(android.GetNumericSdkVersion(v)); err != nil {
@@ -361,8 +361,15 @@
 	}
 
 	toFile := func(v string) sdkDep {
+		isCore := strings.HasPrefix(v, "core_")
+		if isCore {
+			v = strings.TrimPrefix(v, "core_")
+		}
 		dir := filepath.Join("prebuilts/sdk", v)
 		jar := filepath.Join(dir, "android.jar")
+		if isCore {
+			jar = filepath.Join(dir, "core.jar")
+		}
 		aidl := filepath.Join(dir, "framework.aidl")
 		jarPath := android.ExistentPathForSource(ctx, "sdkdir", jar)
 		aidlPath := android.ExistentPathForSource(ctx, "sdkdir", aidl)
@@ -557,6 +564,15 @@
 	}
 }
 
+func checkLinkType(ctx android.ModuleContext, from *Module, to *Library, tag dependencyTag) {
+	if strings.HasPrefix(String(from.deviceProperties.Sdk_version), "core_") {
+		if !strings.HasPrefix(String(to.deviceProperties.Sdk_version), "core_") {
+			ctx.ModuleErrorf("depends on other library %q using non-core Java APIs",
+				ctx.OtherModuleName(to))
+		}
+	}
+}
+
 func (j *Module) collectDeps(ctx android.ModuleContext) deps {
 	var deps deps
 
@@ -573,6 +589,9 @@
 		otherName := ctx.OtherModuleName(module)
 		tag := ctx.OtherModuleDependencyTag(module)
 
+		if to, ok := module.(*Library); ok {
+			checkLinkType(ctx, j, to, tag.(dependencyTag))
+		}
 		switch dep := module.(type) {
 		case Dependency:
 			switch tag {
@@ -989,7 +1008,7 @@
 // modules targeting an unreleased SDK (meaning it does not yet have a number) it returns "10000".
 func (j *Module) minSdkVersionNumber(ctx android.ModuleContext) string {
 	switch String(j.deviceProperties.Sdk_version) {
-	case "", "current", "test_current", "system_current":
+	case "", "current", "test_current", "system_current", "core_current":
 		return strconv.Itoa(ctx.Config().DefaultAppTargetSdkInt())
 	default:
 		return android.GetNumericSdkVersion(String(j.deviceProperties.Sdk_version))
diff --git a/java/java_test.go b/java/java_test.go
index db0b7a7..60d9a40 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -146,6 +146,7 @@
 		"prebuilts/sdk/14/framework.aidl":             nil,
 		"prebuilts/sdk/current/android.jar":           nil,
 		"prebuilts/sdk/current/framework.aidl":        nil,
+		"prebuilts/sdk/current/core.jar":              nil,
 		"prebuilts/sdk/system_current/android.jar":    nil,
 		"prebuilts/sdk/system_current/framework.aidl": nil,
 		"prebuilts/sdk/system_14/android.jar":         nil,
@@ -362,6 +363,14 @@
 	},
 	{
 
+		name:          "core_current",
+		properties:    `sdk_version: "core_current",`,
+		bootclasspath: []string{`""`},
+		system:        "bootclasspath", // special value to tell 1.9 test to expect bootclasspath
+		classpath:     []string{"prebuilts/sdk/current/core.jar"},
+	},
+	{
+
 		name:          "nostdlib",
 		properties:    `no_standard_libs: true, system_modules: "none"`,
 		system:        "none",
