diff --git a/cc/cc.go b/cc/cc.go
index a58a84d..91bf9a6 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -535,7 +535,8 @@
 	if sanitize != nil {
 		isUnsanitizedVariant = sanitize.isUnsanitizedVariant()
 	}
-	return isUnsanitizedVariant && ctx.ctx.Device() && ((ctx.useVndk() && ctx.isVndk()) || inList(ctx.baseModuleName(), llndkLibraries))
+	vendorAvailable := Bool(ctx.mod.VendorProperties.Vendor_available)
+	return vendorAvailable && isUnsanitizedVariant && ctx.ctx.Device() && ((ctx.useVndk() && ctx.isVndk()) || inList(ctx.baseModuleName(), llndkLibraries))
 }
 
 func (ctx *moduleContextImpl) selectedStl() string {
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 9d6f58e..f60463b 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -73,6 +73,10 @@
 	// list of of java libraries that will be in the classpath.
 	Libs []string `android:"arch_variant"`
 
+	// don't build against the framework libraries (legacy-test, core-junit,
+	// ext, and framework for device targets)
+	No_framework_libs *bool
+
 	// If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true.
 	Installable *bool `android:"arch_variant"`
 
@@ -183,7 +187,9 @@
 		sdkDep := decodeSdkDep(ctx, String(j.properties.Sdk_version))
 		if sdkDep.useDefaultLibs {
 			ctx.AddDependency(ctx.Module(), bootClasspathTag, config.DefaultBootclasspathLibraries...)
-			ctx.AddDependency(ctx.Module(), libTag, []string{"ext", "framework"}...)
+			if Bool(j.properties.No_framework_libs) {
+				ctx.AddDependency(ctx.Module(), libTag, []string{"ext", "framework"}...)
+			}
 		} else if sdkDep.useModule {
 			ctx.AddDependency(ctx.Module(), bootClasspathTag, sdkDep.module)
 		}
diff --git a/java/java.go b/java/java.go
index 3bd07df..c4c07f7 100644
--- a/java/java.go
+++ b/java/java.go
@@ -571,13 +571,15 @@
 func (j *Module) collectDeps(ctx android.ModuleContext) deps {
 	var deps deps
 
-	sdkDep := decodeSdkDep(ctx, String(j.deviceProperties.Sdk_version))
-	if sdkDep.invalidVersion {
-		ctx.AddMissingDependencies([]string{sdkDep.module})
-	} else if sdkDep.useFiles {
-		// sdkDep.jar is actually equivalent to turbine header.jar.
-		deps.classpath = append(deps.classpath, sdkDep.jar)
-		deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, sdkDep.aidl)
+	if ctx.Device() {
+		sdkDep := decodeSdkDep(ctx, String(j.deviceProperties.Sdk_version))
+		if sdkDep.invalidVersion {
+			ctx.AddMissingDependencies([]string{sdkDep.module})
+		} else if sdkDep.useFiles {
+			// sdkDep.jar is actually equivalent to turbine header.jar.
+			deps.classpath = append(deps.classpath, sdkDep.jar)
+			deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, sdkDep.aidl)
+		}
 	}
 
 	ctx.VisitDirectDeps(func(module android.Module) {
