diff --git a/apex/apex.go b/apex/apex.go index 75cff7dde..89b5f2176 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -2377,6 +2377,9 @@ func (a *apexBundle) checkUpdatable(ctx android.ModuleContext) { if a.UsePlatformApis() { ctx.PropertyErrorf("updatable", "updatable APEXes can't use platform APIs") } + if a.SocSpecific() || a.DeviceSpecific() { + ctx.PropertyErrorf("updatable", "vendor APEXes are not updatable") + } a.checkJavaStableSdkVersion(ctx) a.checkClasspathFragments(ctx) } diff --git a/apex/apex_test.go b/apex/apex_test.go index e2ca23409..b805cd91b 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -7075,6 +7075,23 @@ func TestUpdatableDefault_should_set_min_sdk_version(t *testing.T) { `) } +func TestUpdatable_cannot_be_vendor_apex(t *testing.T) { + testApexError(t, `"myapex" .*: updatable: vendor APEXes are not updatable`, ` + apex { + name: "myapex", + key: "myapex.key", + updatable: true, + soc_specific: true, + } + + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + } + `) +} + func TestUpdatable_should_not_set_generate_classpaths_proto(t *testing.T) { testApexError(t, `"mysystemserverclasspathfragment" .* it must not set generate_classpaths_proto to false`, ` apex {