Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d15d635 authored by Jaewoong Jung's avatar Jaewoong Jung
Browse files

Add min_sdk_version to java_import.

Fixes: 183695497
Test: apex_test.go
Change-Id: Ie255f74d40432f4bdd0092d618705a7d17235e58
parent fdfb9540
Loading
Loading
Loading
Loading
+64 −54
Original line number Diff line number Diff line
@@ -805,16 +805,26 @@ var minSdkVersionAllowlist = func(apiMap map[string]int) map[string]ApiLevel {
}(map[string]int{
	"adbd":                                                     30,
	"android.net.ipsec.ike":                                    30,
	"androidx.annotation_annotation-nodeps":                    29,
	"androidx.arch.core_core-common-nodeps":                    29,
	"androidx.collection_collection-nodeps":                    29,
	"androidx.collection_collection-ktx-nodeps":                30,
	"androidx.lifecycle_lifecycle-common-java8-nodeps":         30,
	"androidx.lifecycle_lifecycle-common-nodeps":               29,
	"androidx-constraintlayout_constraintlayout-solver-nodeps": 29,
	"apache-commons-compress":                                  29,
	"bouncycastle_ike_digests":                                 30,
	"brotli-java":                                              29,
	"captiveportal-lib":                                        28,
	"error_prone_annotations":                                  30,
	"flatbuffer_headers":                                       30,
	"framework-permission":                                     30,
	"gemmlowp_headers":                                         30,
	"ike-internals":                                            30,
	"kotlinx-coroutines-android":                               28,
	"kotlinx-coroutines-android-nodeps":                        30,
	"kotlinx-coroutines-core":                                  28,
	"kotlinx-coroutines-core-nodeps":                           30,
	"libadb_crypto":                                            30,
	"libadb_pairing_auth":                                      30,
	"libadb_pairing_connection":                                30,
+35 −1
Original line number Diff line number Diff line
@@ -1808,6 +1808,30 @@ func TestApexMinSdkVersion_ErrorIfIncompatibleVersion(t *testing.T) {
			min_sdk_version: "30",
		}
	`)

	testApexError(t, `module "libfoo".*: should support min_sdk_version\(29\)`, `
		apex {
			name: "myapex",
			key: "myapex.key",
			java_libs: ["libfoo"],
			min_sdk_version: "29",
		}

		apex_key {
			name: "myapex.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}

		java_import {
			name: "libfoo",
			jars: ["libfoo.jar"],
			apex_available: [
				"myapex",
			],
			min_sdk_version: "30",
		}
	`)
}

func TestApexMinSdkVersion_Okay(t *testing.T) {
@@ -1845,7 +1869,10 @@ func TestApexMinSdkVersion_Okay(t *testing.T) {
			name: "libbar",
			sdk_version: "current",
			srcs: ["a.java"],
			static_libs: ["libbar_dep"],
			static_libs: [
				"libbar_dep",
				"libbar_import_dep",
			],
			apex_available: ["myapex"],
			min_sdk_version: "29",
		}
@@ -1857,6 +1884,13 @@ func TestApexMinSdkVersion_Okay(t *testing.T) {
			apex_available: ["myapex"],
			min_sdk_version: "29",
		}

		java_import {
			name: "libbar_import_dep",
			jars: ["libbar.jar"],
			apex_available: ["myapex"],
			min_sdk_version: "29",
		}
	`)
}

+23 −1
Original line number Diff line number Diff line
@@ -1074,8 +1074,14 @@ func BinaryHostFactory() android.Module {
type ImportProperties struct {
	Jars []string `android:"path,arch_variant"`

	// The version of the SDK that the source prebuilt file was built against. Defaults to the
	// current version if not specified.
	Sdk_version *string

	// The minimum version of the SDK that this module supports. Defaults to sdk_version if not
	// specified.
	Min_sdk_version *string

	Installable *bool

	// List of shared java libs that this module has dependencies to
@@ -1139,6 +1145,9 @@ func (j *Import) systemModules() string {
}

func (j *Import) minSdkVersion() sdkSpec {
	if j.properties.Min_sdk_version != nil {
		return sdkSpecFrom(*j.properties.Min_sdk_version)
	}
	return j.sdkVersion()
}

@@ -1350,7 +1359,20 @@ func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu
// Implements android.ApexModule
func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
	sdkVersion android.ApiLevel) error {
	// Do not check for prebuilts against the min_sdk_version of enclosing APEX
	sdkSpec := j.minSdkVersion()
	if !sdkSpec.specified() {
		return fmt.Errorf("min_sdk_version is not specified")
	}
	if sdkSpec.kind == sdkCore {
		return nil
	}
	ver, err := sdkSpec.effectiveVersion(ctx)
	if err != nil {
		return err
	}
	if ver.ApiLevel(ctx).GreaterThan(sdkVersion) {
		return fmt.Errorf("newer SDK(%v)", ver)
	}
	return nil
}