summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Artur Satayev <satayev@google.com> 2020-04-16 13:43:02 +0100
committer Artur Satayev <satayev@google.com> 2020-04-27 16:26:31 +0100
commitf40fc858a2684d546a786684d78e24e5514e29e7 (patch)
tree25ae9cea098b7d2d2ad0c0bc40e0fc6a2ace61a9
parent14f42d34af0024a8759ea1eb8d3f40e84492d4a6 (diff)
Do not allow updatable apps without min_sdk_version.
All updatable modules are expected to declare their earliest platform version they support. Bug: 153539598 Test: m Change-Id: I6243d276e5ab25a1007187ad34789ca1b4cc87bf
-rwxr-xr-xjava/app.go7
-rw-r--r--java/app_test.go19
2 files changed, 25 insertions, 1 deletions
diff --git a/java/app.go b/java/app.go
index 7d509eea1..5577cdfd2 100755
--- a/java/app.go
+++ b/java/app.go
@@ -112,7 +112,9 @@ type appProperties struct {
IsCoverageVariant bool `blueprint:"mutated"`
// Whether this app is considered mainline updatable or not. When set to true, this will enforce
- // additional rules for making sure that the APK is truly updatable. Default is false.
+ // additional rules to make sure an app can safely be updated. Default is false.
+ // Prefer using other specific properties if build behaviour must be changed; avoid using this
+ // flag for anything but neverallow rules (unless the behaviour change is invisible to owners).
Updatable *bool
}
@@ -262,6 +264,9 @@ func (a *AndroidApp) checkAppSdkVersions(ctx android.ModuleContext) {
if !a.sdkVersion().stable() {
ctx.PropertyErrorf("sdk_version", "Updatable apps must use stable SDKs, found %v", a.sdkVersion())
}
+ if String(a.deviceProperties.Min_sdk_version) == "" {
+ ctx.PropertyErrorf("updatable", "updatable apps must set min_sdk_version.")
+ }
}
a.checkPlatformAPI(ctx)
diff --git a/java/app_test.go b/java/app_test.go
index 7b04e4629..4178d5eb9 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -276,6 +276,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "29",
+ min_sdk_version: "29",
updatable: true,
}`,
},
@@ -285,6 +286,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "system_29",
+ min_sdk_version: "29",
updatable: true,
}`,
},
@@ -294,6 +296,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
+ min_sdk_version: "29",
updatable: true,
}`,
},
@@ -303,6 +306,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "system_current",
+ min_sdk_version: "29",
updatable: true,
}`,
},
@@ -312,6 +316,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "module_current",
+ min_sdk_version: "29",
updatable: true,
}`,
},
@@ -321,6 +326,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "core_current",
+ min_sdk_version: "29",
updatable: true,
}`,
},
@@ -330,6 +336,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
platform_apis: true,
+ min_sdk_version: "29",
updatable: true,
}`,
expectedError: "Updatable apps must use stable SDKs",
@@ -340,6 +347,7 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
sdk_version: "core_platform",
+ min_sdk_version: "29",
updatable: true,
}`,
expectedError: "Updatable apps must use stable SDKs",
@@ -350,9 +358,20 @@ func TestUpdatableApps(t *testing.T) {
name: "foo",
srcs: ["a.java"],
updatable: true,
+ min_sdk_version: "29",
}`,
expectedError: "Updatable apps must use stable SDK",
},
+ {
+ name: "Must specify min_sdk_version",
+ bp: `android_app {
+ name: "app_without_min_sdk_version",
+ srcs: ["a.java"],
+ sdk_version: "29",
+ updatable: true,
+ }`,
+ expectedError: "updatable apps must set min_sdk_version.",
+ },
}
for _, test := range testCases {