aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorArtur Satayev <satayev@google.com>2020-04-28 12:05:38 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-04-28 12:05:38 +0000
commit785afdb04cd300e5fa34afbad37476a64933289f (patch)
treeea1473b78a00e22c4f6595764da625e2dfb187bf /java
parent0f4c8686165b975a01fa44544547a2f636fc81eb (diff)
parent11962107189926357839510be5ed583e093f363a (diff)
downloadbuild_soong-785afdb04cd300e5fa34afbad37476a64933289f.tar.gz
build_soong-785afdb04cd300e5fa34afbad37476a64933289f.tar.bz2
build_soong-785afdb04cd300e5fa34afbad37476a64933289f.zip
Merge "Do not allow updatable apps without min_sdk_version." into rvc-dev
Diffstat (limited to 'java')
-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 0ec2502b..f8123356 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
}
@@ -255,6 +257,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 39460dce..55c1d769 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 {