From 419290aba90e8b8a97e5dc09aad0c3c9aa420ece Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Wed, 31 Oct 2018 15:28:47 -0700 Subject: Support setting target_sdk_version separately from sdk_version Before this change, if targetSdkVersion wasn't set in the AndroidManifest.xml, we'd set it to the sdk_version from the Android.bp. But there are cases where you want to compile against a later SDK, but target an earlier one (especially if you depend on libraries that need to be compiled against more recent SDKs, like androidx). Test: build APK with different target_sdk_version. Change-Id: Iaed36b522955a374a049ef331158cc8fc5798ad2 --- java/java.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'java/java.go') diff --git a/java/java.go b/java/java.go index 0f9547980..50c284a94 100644 --- a/java/java.go +++ b/java/java.go @@ -183,6 +183,10 @@ type CompilerDeviceProperties struct { // Defaults to sdk_version if not set. Min_sdk_version *string + // if not blank, set the targetSdkVersion in the AndroidManifest.xml. + // Defaults to sdk_version if not set. + Target_sdk_version *string + // if true, compile against the platform APIs instead of an SDK. Platform_apis *bool @@ -425,11 +429,20 @@ func (j *Module) minSdkVersion() string { return j.sdkVersion() } +func (j *Module) targetSdkVersion() string { + if j.deviceProperties.Target_sdk_version != nil { + return *j.deviceProperties.Target_sdk_version + } + return j.sdkVersion() +} + type sdkContext interface { // sdkVersion eturns the sdk_version property of the current module, or an empty string if it is not set. sdkVersion() string // minSdkVersion returns the min_sdk_version property of the current module, or sdkVersion() if it is not set. minSdkVersion() string + // targetSdkVersion returns the target_sdk_version property of the current module, or sdkVersion() if it is not set. + targetSdkVersion() string } func sdkVersionOrDefault(ctx android.BaseContext, v string) string { -- cgit v1.2.3-59-g8ed1b