diff --git a/android/config.go b/android/config.go index c435e8585..32a47833d 100644 --- a/android/config.go +++ b/android/config.go @@ -382,6 +382,14 @@ func (c *config) MinSupportedSdkVersion() int { return 14 } +func (c *config) DefaultAppTargetSdkInt() int { + if Bool(c.ProductVariables.Platform_sdk_final) { + return c.PlatformSdkVersionInt() + } else { + return 10000 + } +} + // Codenames that are active in the current lunch target. func (c *config) PlatformVersionActiveCodenames() []string { return c.ProductVariables.Platform_version_active_codenames diff --git a/android/variable.go b/android/variable.go index 1ecd9fba3..9dd9d25ba 100644 --- a/android/variable.go +++ b/android/variable.go @@ -108,6 +108,7 @@ type productVariables struct { Make_suffix *string `json:",omitempty"` Platform_sdk_version *int `json:",omitempty"` + Platform_sdk_final *bool `json:",omitempty"` Platform_version_active_codenames []string `json:",omitempty"` Platform_version_future_codenames []string `json:",omitempty"` diff --git a/java/java.go b/java/java.go index 89c201635..9888b387d 100644 --- a/java/java.go +++ b/java/java.go @@ -407,6 +407,16 @@ func (j *Module) compile(ctx android.ModuleContext) { "--dump-width=1000") } + var minSdkVersion string + switch j.deviceProperties.Sdk_version { + case "", "current", "test_current", "system_current": + minSdkVersion = strconv.Itoa(ctx.AConfig().DefaultAppTargetSdkInt()) + default: + minSdkVersion = j.deviceProperties.Sdk_version + } + + dxFlags = append(dxFlags, "--min-sdk-version="+minSdkVersion) + flags.dxFlags = strings.Join(dxFlags, " ") // Compile classes.jar into classes.dex