From 6910911c64920ce0f66aa85fc4619b210dbd0613 Mon Sep 17 00:00:00 2001 From: Daniel Norman Date: Thu, 2 Dec 2021 12:52:42 -0800 Subject: [PATCH] Forbid updatable: true on vendor APEXes. Vendor APEXes do not formally support updates outside of the main OTA process. We should clarify this at build time. Test: set vendor apex to updatable, observe failure Test: apex_test.go Change-Id: Ife8d242a42415ebf00d7dced72c07cda1fde1839 --- apex/apex.go | 3 +++ apex/apex_test.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) 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 {