diff --git a/android/config.go b/android/config.go
index b3480d9..1e51840 100644
--- a/android/config.go
+++ b/android/config.go
@@ -413,21 +413,18 @@
 // To add a new feature to the list, add the field in the struct
 // `partialCompileFlags` above, and then add the name of the field in the
 // switch statement below.
-var defaultPartialCompileFlags = partialCompileFlags{
-	// Set any opt-out flags here.  Opt-in flags are off by default.
-	enabled: false,
-}
-
-func (c *config) parsePartialCompileFlags(isEngBuild bool) (partialCompileFlags, error) {
+func (c *config) parsePartialCompileFlags() (partialCompileFlags, error) {
+	defaultFlags := partialCompileFlags{
+		// Set any opt-out flags here.  Opt-in flags are off by default.
+		enabled: false,
+	}
 	value := c.Getenv("SOONG_PARTIAL_COMPILE")
-	if !isEngBuild {
-		return partialCompileFlags{}, nil
-	}
+
 	if value == "" {
-		return defaultPartialCompileFlags, nil
+		return defaultFlags, nil
 	}
 
-	ret := defaultPartialCompileFlags
+	ret := defaultFlags
 	tokens := strings.Split(strings.ToLower(value), ",")
 	makeVal := func(state string, defaultValue bool) bool {
 		switch state {
@@ -458,17 +455,17 @@
 		}
 		switch tok {
 		case "true":
-			ret = defaultPartialCompileFlags
+			ret = defaultFlags
 			ret.enabled = true
 		case "false":
 			// Set everything to false.
 			ret = partialCompileFlags{}
 		case "enabled":
-			ret.enabled = makeVal(state, defaultPartialCompileFlags.enabled)
+			ret.enabled = makeVal(state, defaultFlags.enabled)
 		case "use_d8":
-			ret.use_d8 = makeVal(state, defaultPartialCompileFlags.use_d8)
+			ret.use_d8 = makeVal(state, defaultFlags.use_d8)
 		default:
-			return partialCompileFlags{}, fmt.Errorf("Unknown SOONG_PARTIAL_COMPILE value: %v", tok)
+			return partialCompileFlags{}, fmt.Errorf("Unknown SOONG_PARTIAL_COMPILE value: %v", value)
 		}
 	}
 	return ret, nil
@@ -619,14 +616,6 @@
 
 		buildFromSourceStub: cmdArgs.BuildFromSourceStub,
 	}
-	variant, ok := os.LookupEnv("TARGET_BUILD_VARIANT")
-	isEngBuild := !ok || variant == "eng"
-
-	if isEngBuild {
-		// Partial Compile is only supported on eng builds.
-		config.env["SOONG_PARTIAL_COMPILE"] = "false"
-		config.env["SOONG_USE_PARTIAL_COMPILE"] = ""
-	}
 
 	config.deviceConfig = &deviceConfig{
 		config: config,
@@ -668,7 +657,7 @@
 		return Config{}, err
 	}
 
-	config.partialCompileFlags, err = config.parsePartialCompileFlags(isEngBuild)
+	config.partialCompileFlags, err = config.parsePartialCompileFlags()
 	if err != nil {
 		return Config{}, err
 	}
