Merge "Add min_sdk_version to java_import."
This commit is contained in:
118
android/apex.go
118
android/apex.go
@@ -803,60 +803,70 @@ var minSdkVersionAllowlist = func(apiMap map[string]int) map[string]ApiLevel {
|
|||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
}(map[string]int{
|
}(map[string]int{
|
||||||
"adbd": 30,
|
"adbd": 30,
|
||||||
"android.net.ipsec.ike": 30,
|
"android.net.ipsec.ike": 30,
|
||||||
"apache-commons-compress": 29,
|
"androidx.annotation_annotation-nodeps": 29,
|
||||||
"bouncycastle_ike_digests": 30,
|
"androidx.arch.core_core-common-nodeps": 29,
|
||||||
"brotli-java": 29,
|
"androidx.collection_collection-nodeps": 29,
|
||||||
"captiveportal-lib": 28,
|
"androidx.collection_collection-ktx-nodeps": 30,
|
||||||
"flatbuffer_headers": 30,
|
"androidx.lifecycle_lifecycle-common-java8-nodeps": 30,
|
||||||
"framework-permission": 30,
|
"androidx.lifecycle_lifecycle-common-nodeps": 29,
|
||||||
"gemmlowp_headers": 30,
|
"androidx-constraintlayout_constraintlayout-solver-nodeps": 29,
|
||||||
"ike-internals": 30,
|
"apache-commons-compress": 29,
|
||||||
"kotlinx-coroutines-android": 28,
|
"bouncycastle_ike_digests": 30,
|
||||||
"kotlinx-coroutines-core": 28,
|
"brotli-java": 29,
|
||||||
"libadb_crypto": 30,
|
"captiveportal-lib": 28,
|
||||||
"libadb_pairing_auth": 30,
|
"error_prone_annotations": 30,
|
||||||
"libadb_pairing_connection": 30,
|
"flatbuffer_headers": 30,
|
||||||
"libadb_pairing_server": 30,
|
"framework-permission": 30,
|
||||||
"libadb_protos": 30,
|
"gemmlowp_headers": 30,
|
||||||
"libadb_tls_connection": 30,
|
"ike-internals": 30,
|
||||||
"libadbconnection_client": 30,
|
"kotlinx-coroutines-android": 28,
|
||||||
"libadbconnection_server": 30,
|
"kotlinx-coroutines-android-nodeps": 30,
|
||||||
"libadbd_core": 30,
|
"kotlinx-coroutines-core": 28,
|
||||||
"libadbd_services": 30,
|
"kotlinx-coroutines-core-nodeps": 30,
|
||||||
"libadbd": 30,
|
"libadb_crypto": 30,
|
||||||
"libapp_processes_protos_lite": 30,
|
"libadb_pairing_auth": 30,
|
||||||
"libasyncio": 30,
|
"libadb_pairing_connection": 30,
|
||||||
"libbrotli": 30,
|
"libadb_pairing_server": 30,
|
||||||
"libbuildversion": 30,
|
"libadb_protos": 30,
|
||||||
"libcrypto_static": 30,
|
"libadb_tls_connection": 30,
|
||||||
"libcrypto_utils": 30,
|
"libadbconnection_client": 30,
|
||||||
"libdiagnose_usb": 30,
|
"libadbconnection_server": 30,
|
||||||
"libeigen": 30,
|
"libadbd_core": 30,
|
||||||
"liblz4": 30,
|
"libadbd_services": 30,
|
||||||
"libmdnssd": 30,
|
"libadbd": 30,
|
||||||
"libneuralnetworks_common": 30,
|
"libapp_processes_protos_lite": 30,
|
||||||
"libneuralnetworks_headers": 30,
|
"libasyncio": 30,
|
||||||
"libneuralnetworks": 30,
|
"libbrotli": 30,
|
||||||
"libprocpartition": 30,
|
"libbuildversion": 30,
|
||||||
"libprotobuf-java-lite": 30,
|
"libcrypto_static": 30,
|
||||||
"libprotoutil": 30,
|
"libcrypto_utils": 30,
|
||||||
"libqemu_pipe": 30,
|
"libdiagnose_usb": 30,
|
||||||
"libsync": 30,
|
"libeigen": 30,
|
||||||
"libtextclassifier_hash_headers": 30,
|
"liblz4": 30,
|
||||||
"libtextclassifier_hash_static": 30,
|
"libmdnssd": 30,
|
||||||
"libtflite_kernel_utils": 30,
|
"libneuralnetworks_common": 30,
|
||||||
"libwatchdog": 29,
|
"libneuralnetworks_headers": 30,
|
||||||
"libzstd": 30,
|
"libneuralnetworks": 30,
|
||||||
"metrics-constants-protos": 28,
|
"libprocpartition": 30,
|
||||||
"net-utils-framework-common": 29,
|
"libprotobuf-java-lite": 30,
|
||||||
"permissioncontroller-statsd": 28,
|
"libprotoutil": 30,
|
||||||
"philox_random_headers": 30,
|
"libqemu_pipe": 30,
|
||||||
"philox_random": 30,
|
"libsync": 30,
|
||||||
"service-permission": 30,
|
"libtextclassifier_hash_headers": 30,
|
||||||
"tensorflow_headers": 30,
|
"libtextclassifier_hash_static": 30,
|
||||||
"xz-java": 29,
|
"libtflite_kernel_utils": 30,
|
||||||
|
"libwatchdog": 29,
|
||||||
|
"libzstd": 30,
|
||||||
|
"metrics-constants-protos": 28,
|
||||||
|
"net-utils-framework-common": 29,
|
||||||
|
"permissioncontroller-statsd": 28,
|
||||||
|
"philox_random_headers": 30,
|
||||||
|
"philox_random": 30,
|
||||||
|
"service-permission": 30,
|
||||||
|
"tensorflow_headers": 30,
|
||||||
|
"xz-java": 29,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Function called while walking an APEX's payload dependencies.
|
// Function called while walking an APEX's payload dependencies.
|
||||||
|
@@ -1836,6 +1836,30 @@ func TestApexMinSdkVersion_ErrorIfIncompatibleVersion(t *testing.T) {
|
|||||||
min_sdk_version: "30",
|
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) {
|
func TestApexMinSdkVersion_Okay(t *testing.T) {
|
||||||
@@ -1873,7 +1897,10 @@ func TestApexMinSdkVersion_Okay(t *testing.T) {
|
|||||||
name: "libbar",
|
name: "libbar",
|
||||||
sdk_version: "current",
|
sdk_version: "current",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
static_libs: ["libbar_dep"],
|
static_libs: [
|
||||||
|
"libbar_dep",
|
||||||
|
"libbar_import_dep",
|
||||||
|
],
|
||||||
apex_available: ["myapex"],
|
apex_available: ["myapex"],
|
||||||
min_sdk_version: "29",
|
min_sdk_version: "29",
|
||||||
}
|
}
|
||||||
@@ -1885,6 +1912,13 @@ func TestApexMinSdkVersion_Okay(t *testing.T) {
|
|||||||
apex_available: ["myapex"],
|
apex_available: ["myapex"],
|
||||||
min_sdk_version: "29",
|
min_sdk_version: "29",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
java_import {
|
||||||
|
name: "libbar_import_dep",
|
||||||
|
jars: ["libbar.jar"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
min_sdk_version: "29",
|
||||||
|
}
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
java/java.go
24
java/java.go
@@ -1074,8 +1074,14 @@ func BinaryHostFactory() android.Module {
|
|||||||
type ImportProperties struct {
|
type ImportProperties struct {
|
||||||
Jars []string `android:"path,arch_variant"`
|
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
|
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
|
Installable *bool
|
||||||
|
|
||||||
// List of shared java libs that this module has dependencies to
|
// 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 {
|
func (j *Import) minSdkVersion() sdkSpec {
|
||||||
|
if j.properties.Min_sdk_version != nil {
|
||||||
|
return sdkSpecFrom(*j.properties.Min_sdk_version)
|
||||||
|
}
|
||||||
return j.sdkVersion()
|
return j.sdkVersion()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1350,7 +1359,20 @@ func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu
|
|||||||
// Implements android.ApexModule
|
// Implements android.ApexModule
|
||||||
func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
|
func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
|
||||||
sdkVersion android.ApiLevel) error {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user