aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-03-10 22:09:38 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-03-10 22:09:38 +0000
commit44bfb918c928204c905492b53b41e65e77b99857 (patch)
tree575e965c4960fb3ffadee62af052b81aa7bf0721
parenta893f5bca631a76172a49257b3553f0f8c1d9d03 (diff)
parent317b1960e10f3462f54b0a895b06b7dad1081634 (diff)
downloadcommon-44bfb918c928204c905492b53b41e65e77b99857.tar.gz
Snap for 7198837 from 317b1960e10f3462f54b0a895b06b7dad1081634 to mainline-permission-release
Change-Id: I6a9c18a31232e604d8b9ab00b1c47d218d5a0a39
-rw-r--r--MODULES_OWNERS9
-rw-r--r--PREUPLOAD.cfg2
-rw-r--r--java/com/android/modules/annotation/Android.bp32
-rw-r--r--java/com/android/modules/annotation/MinSdk.java57
-rw-r--r--sdk/Android.bp3
5 files changed, 103 insertions, 0 deletions
diff --git a/MODULES_OWNERS b/MODULES_OWNERS
new file mode 100644
index 00000000..95e3fc8a
--- /dev/null
+++ b/MODULES_OWNERS
@@ -0,0 +1,9 @@
+# This file is intended to be included in the OWNERS file for mainline modules.
+# The goal is to allow the mainline modularization team to approve certain
+# classes of change within mainline modules and their build rules.
+#
+# It should be included in a module OWNERS file via:
+# include packages/modules/common:/MODULES_OWNERS
+
+mathewi@google.com
+hansson@google.com
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 00000000..ce751504
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Hook Scripts]
+do_not_use_DO_NOT_MERGE = ${REPO_ROOT}/build/soong/scripts/check_do_not_merge.sh ${PREUPLOAD_COMMIT}
diff --git a/java/com/android/modules/annotation/Android.bp b/java/com/android/modules/annotation/Android.bp
new file mode 100644
index 00000000..1e6f2283
--- /dev/null
+++ b/java/com/android/modules/annotation/Android.bp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+java_library {
+ name: "modules-annotation-minsdk",
+ host_supported: true,
+ srcs: [
+ "MinSdk.java",
+ ],
+ sdk_version: "29",
+ visibility: ["//visibility:public"],
+ apex_available: [
+ "//apex_available:anyapex",
+ ],
+}
diff --git a/java/com/android/modules/annotation/MinSdk.java b/java/com/android/modules/annotation/MinSdk.java
new file mode 100644
index 00000000..38221951
--- /dev/null
+++ b/java/com/android/modules/annotation/MinSdk.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.modules.annotation;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.CLASS;
+
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates than an API is only supported on platform versions of at least the given value and
+ * later.
+ *
+ * Currently, this annotations is purely informational. The exact meaning of this annotation depends
+ * on it's context:
+ * <ul>
+ * <li>On a public SDK method, it means that the member should only be included in the SDK of
+ * the given version or later</li>
+ * <li>On a module API, it will mean that it should only be called when running on a device with
+ * the given SDK or later</li>
+ * </ul>
+ *
+ * In future, the annotation will acquire further semantics:
+ * <ul>
+ * <li>Classes annotated with this will only be classloaded on devices running the given SDK
+ * version or later.</li>
+ * <li>It will be used to ensure API safety at build time in the context of a codebase with
+ * different parts having different min SDK versions.</li>
+ * </ul>
+ *
+ * This annotation should only be used on code that exports an API (either public SDK or
+ * {@code @SystemApi}. For code that just calls APIs that only exist on newer platform versions
+ * use {@code androidx.annotation.RequiresApi} instead.
+ */
+@Retention(CLASS)
+@Target({CONSTRUCTOR, METHOD, FIELD, TYPE})
+public @interface MinSdk {
+ int value();
+} \ No newline at end of file
diff --git a/sdk/Android.bp b/sdk/Android.bp
index 0a7ae58b..bbdc599e 100644
--- a/sdk/Android.bp
+++ b/sdk/Android.bp
@@ -14,6 +14,7 @@
package {
default_visibility: [":__subpackages__"],
+ default_applicable_licenses: ["Android-Apache-2.0"],
}
mainline_stubs_args =
@@ -148,6 +149,8 @@ java_defaults {
":__subpackages__",
"//frameworks/base/apex:__subpackages__",
"//frameworks/base/libs/hwui",
+ // TODO: remove after moving connectivity to packages/modules
+ "//frameworks/base/packages/Connectivity:__subpackages__",
"//frameworks/base/wifi",
"//packages/modules:__subpackages__",
"//packages/providers/MediaProvider:__subpackages__",