diff --git a/cc/androidmk.go b/cc/androidmk.go
index 19c7182..ef695b0 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -29,7 +29,6 @@
 	vendorSuffix       = ".vendor"
 	ramdiskSuffix      = ".ramdisk"
 	recoverySuffix     = ".recovery"
-	sdkSuffix          = ".sdk"
 )
 
 type AndroidMkContext interface {
@@ -104,28 +103,6 @@
 						}
 					}
 				}
-				if c.Properties.IsSdkVariant && c.Properties.SdkAndPlatformVariantVisibleToMake {
-					// Make the SDK variant uninstallable so that there are not two rules to install
-					// to the same location.
-					entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true)
-					// Add the unsuffixed name to SOONG_SDK_VARIANT_MODULES so that Make can rewrite
-					// dependencies to the .sdk suffix when building a module that uses the SDK.
-					entries.SetString("SOONG_SDK_VARIANT_MODULES",
-						"$(SOONG_SDK_VARIANT_MODULES) $(patsubst %.sdk,%,$(LOCAL_MODULE))")
-				}
-			},
-		},
-		ExtraFooters: []android.AndroidMkExtraFootersFunc{
-			func(w io.Writer, name, prefix, moduleDir string, entries *android.AndroidMkEntries) {
-				if c.Properties.IsSdkVariant && c.Properties.SdkAndPlatformVariantVisibleToMake &&
-					c.CcLibraryInterface() && c.Shared() {
-					// Using the SDK variant as a JNI library needs a copy of the .so that
-					// is not named .sdk.so so that it can be packaged into the APK with
-					// the right name.
-					fmt.Fprintln(w, "$(eval $(call copy-one-file,",
-						"$(LOCAL_BUILT_MODULE),",
-						"$(patsubst %.sdk.so,%.so,$(LOCAL_BUILT_MODULE))))")
-				}
 			},
 		},
 	}
@@ -416,9 +393,6 @@
 }
 
 func (installer *baseInstaller) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) {
-	if installer.path == (android.InstallPath{}) {
-		return
-	}
 	// Soong installation is only supported for host modules. Have Make
 	// installation trigger Soong installation.
 	if ctx.Target().Os.Class == android.Host {
diff --git a/cc/cc.go b/cc/cc.go
index 794adf1..037b99c 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -42,7 +42,6 @@
 	ctx.RegisterModuleType("cc_defaults", defaultsFactory)
 
 	ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
-		ctx.BottomUp("sdk", sdkMutator).Parallel()
 		ctx.BottomUp("vndk", VndkMutator).Parallel()
 		ctx.BottomUp("link", LinkageMutator).Parallel()
 		ctx.BottomUp("ndk_api", NdkApiMutator).Parallel()
@@ -209,13 +208,9 @@
 	// Deprecated. true is the default, false is invalid.
 	Clang *bool `android:"arch_variant"`
 
-	// Minimum sdk version supported when compiling against the ndk. Setting this property causes
-	// two variants to be built, one for the platform and one for apps.
+	// Minimum sdk version supported when compiling against the ndk
 	Sdk_version *string
 
-	// If true, always create an sdk variant and don't create a platform variant.
-	Sdk_variant_only *bool
-
 	AndroidMkSharedLibs       []string `blueprint:"mutated"`
 	AndroidMkStaticLibs       []string `blueprint:"mutated"`
 	AndroidMkRuntimeLibs      []string `blueprint:"mutated"`
@@ -257,16 +252,6 @@
 	SnapshotRuntimeLibs []string `blueprint:"mutated"`
 
 	Installable *bool
-
-	// Set by factories of module types that can only be referenced from variants compiled against
-	// the SDK.
-	AlwaysSdk bool `blueprint:"mutated"`
-
-	// Variant is an SDK variant created by sdkMutator
-	IsSdkVariant bool `blueprint:"mutated"`
-	// Set when both SDK and platform variants are exported to Make to trigger renaming the SDK
-	// variant to have a ".sdk" suffix.
-	SdkAndPlatformVariantVisibleToMake bool `blueprint:"mutated"`
 }
 
 type VendorProperties struct {
@@ -542,10 +527,7 @@
 }
 
 func (c *Module) SelectedStl() string {
-	if c.stl != nil {
-		return c.stl.Properties.SelectedStl
-	}
-	return ""
+	return c.stl.Properties.SelectedStl
 }
 
 func (c *Module) ToolchainLibrary() bool {
@@ -573,10 +555,6 @@
 	return String(c.Properties.Sdk_version)
 }
 
-func (c *Module) AlwaysSdk() bool {
-	return c.Properties.AlwaysSdk || Bool(c.Properties.Sdk_variant_only)
-}
-
 func (c *Module) IncludeDirs() android.Paths {
 	if c.linker != nil {
 		if library, ok := c.linker.(exportedFlagsProducer); ok {
@@ -825,17 +803,6 @@
 	return c.Properties.VndkVersion != ""
 }
 
-func (c *Module) canUseSdk() bool {
-	return c.Os() == android.Android && !c.UseVndk() && !c.InRamdisk() && !c.InRecovery()
-}
-
-func (c *Module) UseSdk() bool {
-	if c.canUseSdk() {
-		return String(c.Properties.Sdk_version) != ""
-	}
-	return false
-}
-
 func (c *Module) isCoverageVariant() bool {
 	return c.coverage.Properties.IsCoverageVariant
 }
@@ -1093,11 +1060,14 @@
 }
 
 func (ctx *moduleContextImpl) canUseSdk() bool {
-	return ctx.mod.canUseSdk()
+	return ctx.ctx.Device() && !ctx.useVndk() && !ctx.inRamdisk() && !ctx.inRecovery() && !ctx.ctx.Fuchsia()
 }
 
 func (ctx *moduleContextImpl) useSdk() bool {
-	return ctx.mod.UseSdk()
+	if ctx.canUseSdk() {
+		return String(ctx.mod.Properties.Sdk_version) != ""
+	}
+	return false
 }
 
 func (ctx *moduleContextImpl) sdkVersion() string {
@@ -1416,8 +1386,6 @@
 		c.Properties.SubName += ramdiskSuffix
 	} else if c.InRecovery() && !c.OnlyInRecovery() {
 		c.Properties.SubName += recoverySuffix
-	} else if c.Properties.IsSdkVariant && c.Properties.SdkAndPlatformVariantVisibleToMake {
-		c.Properties.SubName += sdkSuffix
 	}
 
 	ctx := &moduleContext{
diff --git a/cc/genrule.go b/cc/genrule.go
index 9331448..155e410 100644
--- a/cc/genrule.go
+++ b/cc/genrule.go
@@ -27,7 +27,6 @@
 	Vendor_available   *bool
 	Ramdisk_available  *bool
 	Recovery_available *bool
-	Sdk_version        *string
 }
 
 // cc_genrule is a genrule that can depend on other cc_* objects.
diff --git a/cc/library.go b/cc/library.go
index 5ce854e..346e7d8 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -1223,7 +1223,7 @@
 	if Bool(library.Properties.Static_ndk_lib) && library.static() &&
 		!ctx.useVndk() && !ctx.inRamdisk() && !ctx.inRecovery() && ctx.Device() &&
 		library.baseLinker.sanitize.isUnsanitizedVariant() &&
-		!library.buildStubs() && ctx.sdkVersion() == "" {
+		!library.buildStubs() {
 		installPath := getNdkSysrootBase(ctx).Join(
 			ctx, "usr/lib", config.NDKTriple(ctx.toolchain()), file.Base())
 
diff --git a/cc/linkable.go b/cc/linkable.go
index fbe61a4..80cd6b8 100644
--- a/cc/linkable.go
+++ b/cc/linkable.go
@@ -45,14 +45,12 @@
 	InRecovery() bool
 	OnlyInRecovery() bool
 
-	UseSdk() bool
 	UseVndk() bool
 	MustUseVendorVariant() bool
 	IsVndk() bool
 	HasVendorVariant() bool
 
 	SdkVersion() string
-	AlwaysSdk() bool
 
 	ToolchainLibrary() bool
 	NdkPrebuiltStl() bool
diff --git a/cc/linker.go b/cc/linker.go
index 385e04e..ae5ee0a 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -158,13 +158,6 @@
 			// the ramdisk variant of the C/C++ module.
 			Exclude_static_libs []string
 		}
-		Platform struct {
-			// list of shared libs that should be use to build the platform variant
-			// of a module that sets sdk_version.  This should rarely be necessary,
-			// in most cases the same libraries are available for the SDK and platform
-			// variants.
-			Shared_libs []string
-		}
 	}
 
 	// make android::build:GetBuildNumber() available containing the build ID.
@@ -262,10 +255,6 @@
 		deps.WholeStaticLibs = removeListFromList(deps.WholeStaticLibs, linker.Properties.Target.Recovery.Exclude_static_libs)
 	}
 
-	if !ctx.useSdk() {
-		deps.SharedLibs = append(deps.SharedLibs, linker.Properties.Target.Platform.Shared_libs...)
-	}
-
 	if ctx.toolchain().Bionic() {
 		// libclang_rt.builtins and libatomic have to be last on the command line
 		if !Bool(linker.Properties.No_libcrt) {
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index 68d4ac0..2a86d33 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -381,9 +381,6 @@
 	module.linker = stub
 	module.installer = stub
 
-	module.Properties.AlwaysSdk = true
-	module.Properties.Sdk_version = StringPtr("current")
-
 	module.AddProperties(&stub.properties, &library.MutatedProperties)
 
 	return module
diff --git a/cc/ndk_prebuilt.go b/cc/ndk_prebuilt.go
index f909add..e849aee 100644
--- a/cc/ndk_prebuilt.go
+++ b/cc/ndk_prebuilt.go
@@ -76,8 +76,6 @@
 			baseLinker: NewBaseLinker(nil),
 		},
 	}
-	module.Properties.AlwaysSdk = true
-	module.Properties.Sdk_version = StringPtr("current")
 	module.Properties.HideFromMake = true
 	return module.Init()
 }
@@ -117,9 +115,10 @@
 		libraryDecorator: library,
 	}
 	module.installer = nil
-	module.Properties.Sdk_version = StringPtr("minimum")
-	module.Properties.AlwaysSdk = true
-	module.stl.Properties.Stl = StringPtr("none")
+	minVersionString := "minimum"
+	noStlString := "none"
+	module.Properties.Sdk_version = &minVersionString
+	module.stl.Properties.Stl = &noStlString
 	return module.Init()
 }
 
@@ -136,9 +135,6 @@
 	}
 	module.installer = nil
 	module.Properties.HideFromMake = true
-	module.Properties.AlwaysSdk = true
-	module.Properties.Sdk_version = StringPtr("current")
-	module.stl.Properties.Stl = StringPtr("none")
 	module.ModuleBase.EnableNativeBridgeSupportByDefault()
 	return module.Init()
 }
diff --git a/cc/sdk.go b/cc/sdk.go
deleted file mode 100644
index d05a04a..0000000
--- a/cc/sdk.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package cc
-
-import (
-	"android/soong/android"
-	"android/soong/genrule"
-)
-
-// sdkMutator sets a creates a platform and an SDK variant for modules
-// that set sdk_version, and ignores sdk_version for the platform
-// variant.  The SDK variant will be used for embedding in APKs
-// that may be installed on older platforms.  Apexes use their own
-// variants that enforce backwards compatibility.
-func sdkMutator(ctx android.BottomUpMutatorContext) {
-	if ctx.Os() != android.Android {
-		return
-	}
-
-	switch m := ctx.Module().(type) {
-	case LinkableInterface:
-		if m.AlwaysSdk() {
-			if !m.UseSdk() {
-				ctx.ModuleErrorf("UseSdk() must return true when AlwaysSdk is set, did the factory forget to set Sdk_version?")
-			}
-			ctx.CreateVariations("sdk")
-		} else if m.UseSdk() {
-			modules := ctx.CreateVariations("", "sdk")
-			modules[0].(*Module).Properties.Sdk_version = nil
-			modules[1].(*Module).Properties.IsSdkVariant = true
-
-			if ctx.Config().UnbundledBuild() {
-				modules[0].(*Module).Properties.HideFromMake = true
-			} else {
-				modules[1].(*Module).Properties.SdkAndPlatformVariantVisibleToMake = true
-				modules[1].(*Module).Properties.PreventInstall = true
-			}
-			ctx.AliasVariation("")
-		} else {
-			ctx.CreateVariations("")
-			ctx.AliasVariation("")
-		}
-	case *genrule.Module:
-		if p, ok := m.Extra.(*GenruleExtraProperties); ok {
-			if String(p.Sdk_version) != "" {
-				ctx.CreateVariations("", "sdk")
-			} else {
-				ctx.CreateVariations("")
-			}
-			ctx.AliasVariation("")
-		}
-	}
-}
diff --git a/cc/sdk_test.go b/cc/sdk_test.go
deleted file mode 100644
index 5a3c181..0000000
--- a/cc/sdk_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package cc
-
-import (
-	"testing"
-
-	"android/soong/android"
-)
-
-func TestSdkMutator(t *testing.T) {
-	bp := `
-		cc_library {
-			name: "libsdk",
-			shared_libs: ["libsdkdep"],
-			sdk_version: "current",
-			stl: "c++_shared",
-		}
-
-		cc_library {
-			name: "libsdkdep",
-			sdk_version: "current",
-			stl: "c++_shared",
-		}
-
-		cc_library {
-			name: "libplatform",
-			shared_libs: ["libsdk"],
-			stl: "libc++",
-		}
-
-		cc_binary {
-			name: "platformbinary",
-			shared_libs: ["libplatform"],
-			stl: "libc++",
-		}
-
-		cc_binary {
-			name: "sdkbinary",
-			shared_libs: ["libsdk"],
-			sdk_version: "current",
-			stl: "libc++",
-		}
-	`
-
-	assertDep := func(t *testing.T, from, to android.TestingModule) {
-		t.Helper()
-		found := false
-
-		var toFile android.Path
-		m := to.Module().(*Module)
-		if toc := m.Toc(); toc.Valid() {
-			toFile = toc.Path()
-		} else {
-			toFile = m.outputFile.Path()
-		}
-
-		rule := from.Description("link")
-		for _, dep := range rule.Implicits {
-			if dep.String() == toFile.String() {
-				found = true
-			}
-		}
-		if !found {
-			t.Errorf("expected %q in %q", toFile.String(), rule.Implicits.Strings())
-		}
-	}
-
-	ctx := testCc(t, bp)
-
-	libsdkNDK := ctx.ModuleForTests("libsdk", "android_arm64_armv8-a_sdk_shared")
-	libsdkPlatform := ctx.ModuleForTests("libsdk", "android_arm64_armv8-a_shared")
-	libsdkdepNDK := ctx.ModuleForTests("libsdkdep", "android_arm64_armv8-a_sdk_shared")
-	libsdkdepPlatform := ctx.ModuleForTests("libsdkdep", "android_arm64_armv8-a_shared")
-	libplatform := ctx.ModuleForTests("libplatform", "android_arm64_armv8-a_shared")
-	platformbinary := ctx.ModuleForTests("platformbinary", "android_arm64_armv8-a")
-	sdkbinary := ctx.ModuleForTests("sdkbinary", "android_arm64_armv8-a_sdk")
-
-	libcxxNDK := ctx.ModuleForTests("ndk_libc++_shared", "android_arm64_armv8-a_sdk_shared")
-	libcxxPlatform := ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared")
-
-	assertDep(t, libsdkNDK, libsdkdepNDK)
-	assertDep(t, libsdkPlatform, libsdkdepPlatform)
-	assertDep(t, libplatform, libsdkPlatform)
-	assertDep(t, platformbinary, libplatform)
-	assertDep(t, sdkbinary, libsdkNDK)
-
-	assertDep(t, libsdkNDK, libcxxNDK)
-	assertDep(t, libsdkPlatform, libcxxPlatform)
-}
diff --git a/cc/stl.go b/cc/stl.go
index 4e74c7f..8113f72 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -115,13 +115,9 @@
 			switch s {
 			case "libc++", "libc++_static":
 				return s
-			case "c++_shared":
-				return "libc++"
-			case "c++_static":
-				return "libc++_static"
 			case "none":
 				return ""
-			case "", "system":
+			case "":
 				if ctx.static() {
 					return "libc++_static"
 				} else {
diff --git a/cc/testing.go b/cc/testing.go
index 89a9c36..b8a7eab 100644
--- a/cc/testing.go
+++ b/cc/testing.go
@@ -138,7 +138,6 @@
 			name: "libgcc_stripped",
 			vendor_available: true,
 			recovery_available: true,
-			sdk_version: "current",
 			src: "",
 		}
 
@@ -156,7 +155,6 @@
 		llndk_library {
 			name: "libc",
 			symbol_file: "",
-			sdk_version: "current",
 		}
 		cc_library {
 			name: "libm",
@@ -176,7 +174,6 @@
 		llndk_library {
 			name: "libm",
 			symbol_file: "",
-			sdk_version: "current",
 		}
 		cc_library {
 			name: "libdl",
@@ -196,7 +193,6 @@
 		llndk_library {
 			name: "libdl",
 			symbol_file: "",
-			sdk_version: "current",
 		}
 		cc_library {
 			name: "libft2",
@@ -209,7 +205,6 @@
 			name: "libft2",
 			symbol_file: "",
 			vendor_available: false,
-			sdk_version: "current",
 		}
 		cc_library {
 			name: "libc++_static",
@@ -341,16 +336,6 @@
 			sdk_version: "27",
 		}
 
-		ndk_prebuilt_object {
-			name: "ndk_crtbegin_dynamic.27",
-			sdk_version: "27",
-		}
-
-		ndk_prebuilt_object {
-			name: "ndk_crtend_android.27",
-			sdk_version: "27",
-		}
-
 		ndk_prebuilt_shared_stl {
 			name: "ndk_libc++_shared",
 		}
diff --git a/cc/toolchain_library.go b/cc/toolchain_library.go
index 042e012..dfc6f76 100644
--- a/cc/toolchain_library.go
+++ b/cc/toolchain_library.go
@@ -67,7 +67,6 @@
 	module.stl = nil
 	module.sanitize = nil
 	module.installer = nil
-	module.Properties.Sdk_version = StringPtr("current")
 	return module.Init()
 }
 
