diff --git a/android/config.go b/android/config.go index bb3cc97ab..c0f84c8aa 100644 --- a/android/config.go +++ b/android/config.go @@ -727,6 +727,10 @@ func (c *config) IsEnvFalse(key string) bool { return value == "0" || value == "n" || value == "no" || value == "off" || value == "false" } +func (c *config) TargetsJava17() bool { + return c.IsEnvTrue("EXPERIMENTAL_TARGET_JAVA_VERSION_17") +} + // EnvDeps returns the environment variables this build depends on. The first // call to this function blocks future reads from the environment. func (c *config) EnvDeps() map[string]string { diff --git a/java/java.go b/java/java.go index 874f93576..659f98a7c 100644 --- a/java/java.go +++ b/java/java.go @@ -517,8 +517,14 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext an return normalizeJavaVersion(ctx, javaVersion) } else if ctx.Device() { return defaultJavaLanguageVersion(ctx, sdkContext.SdkVersion(ctx)) - } else { + } else if ctx.Config().TargetsJava17() { + // Temporary experimental flag to be able to try and build with + // java version 17 options. The flag, if used, just sets Java + // 17 as the default version, leaving any components that + // target an older version intact. return JAVA_VERSION_17 + } else { + return JAVA_VERSION_11 } } diff --git a/java/sdk.go b/java/sdk.go index 10ae3f6e8..b0da5afba 100644 --- a/java/sdk.go +++ b/java/sdk.go @@ -57,10 +57,14 @@ func defaultJavaLanguageVersion(ctx android.EarlyModuleContext, s android.SdkSpe return JAVA_VERSION_8 } else if sdk.FinalOrFutureInt() <= 31 { return JAVA_VERSION_9 - } else if sdk.FinalOrFutureInt() <= 32 { - return JAVA_VERSION_11 - } else { + } else if ctx.Config().TargetsJava17() { + // Temporary experimental flag to be able to try and build with + // java version 17 options. The flag, if used, just sets Java + // 17 as the default version, leaving any components that + // target an older version intact. return JAVA_VERSION_17 + } else { + return JAVA_VERSION_11 } }