From e86e89acff7138de8eb45a691213e80134bd8e9f Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Sun, 17 Nov 2019 13:11:19 +0900 Subject: [PATCH 1/2] Add filegroups for services.* libraries ... in preparation for creating a stub library from services.jar Bug: 139391334 Test: m Exempt-From-Owner-Approval: cherry-pick from internal Merged-In: Ifd6cfc77acf2284804a2f64011c2733b5c222369 (cherry picked from commit bae2e907966dce0cb3eaf3e3a81cca4364b7d941) Change-Id: Ifd6cfc77acf2284804a2f64011c2733b5c222369 --- services/Android.bp | 38 ++++++++++++++++++++++++-- services/accessibility/Android.bp | 9 +++++- services/appprediction/Android.bp | 9 +++++- services/appwidget/Android.bp | 9 +++++- services/autofill/Android.bp | 9 +++++- services/backup/Android.bp | 9 +++++- services/companion/Android.bp | 9 +++++- services/contentcapture/Android.bp | 9 +++++- services/contentsuggestions/Android.bp | 11 ++++++-- services/core/Android.bp | 21 ++++++-------- services/coverage/Android.bp | 9 +++++- services/devicepolicy/Android.bp | 9 +++++- services/midi/Android.bp | 9 +++++- services/net/Android.bp | 10 ++++++- services/print/Android.bp | 9 +++++- services/restrictions/Android.bp | 9 +++++- services/systemcaptions/Android.bp | 9 +++++- services/usage/Android.bp | 9 +++++- services/usb/Android.bp | 9 +++++- services/voiceinteraction/Android.bp | 9 +++++- startop/iorap/Android.bp | 29 ++++++++++++-------- 21 files changed, 207 insertions(+), 46 deletions(-) diff --git a/services/Android.bp b/services/Android.bp index ef40a351c8d1d..3b566078bd51a 100644 --- a/services/Android.bp +++ b/services/Android.bp @@ -1,3 +1,37 @@ +filegroup { + name: "services-main-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//visibility:private"], +} + +filegroup { + name: "services-sources", + srcs: [ + ":services.core-sources", + ":services.accessibility-sources", + ":services.appprediction-sources", + ":services.appwidget-sources", + ":services.autofill-sources", + ":services.backup-sources", + ":services.companion-sources", + ":services.contentcapture-sources", + ":services.contentsuggestions-sources", + ":services.coverage-sources", + ":services.devicepolicy-sources", + ":services.midi-sources", + ":services.net-sources", + ":services.print-sources", + ":services.restrictions-sources", + ":services.startop.iorap-sources", + ":services.systemcaptions-sources", + ":services.usage-sources", + ":services.usb-sources", + ":services.voiceinteraction-sources", + ], + visibility: ["//visibility:private"], +} + // merge all required services into one jar // ============================================================ java_library { @@ -9,9 +43,7 @@ java_library { profile: "art-profile", }, - srcs: [ - "java/**/*.java", - ], + srcs: [":services-main-sources"], // The convention is to name each service module 'services.$(module_name)' static_libs: [ diff --git a/services/accessibility/Android.bp b/services/accessibility/Android.bp index f991d7b50fcbb..284a2f2626a4e 100644 --- a/services/accessibility/Android.bp +++ b/services/accessibility/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.accessibility-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.accessibility", - srcs: ["java/**/*.java"], + srcs: [":services.accessibility-sources"], libs: ["services.core"], } diff --git a/services/appprediction/Android.bp b/services/appprediction/Android.bp index a7be58783aab8..e14e1df0b5c73 100644 --- a/services/appprediction/Android.bp +++ b/services/appprediction/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.appprediction-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.appprediction", - srcs: ["java/**/*.java"], + srcs: [":services.appprediction-sources"], libs: ["services.core"], } diff --git a/services/appwidget/Android.bp b/services/appwidget/Android.bp index aad2ad198bb74..54cf6cec78ea0 100644 --- a/services/appwidget/Android.bp +++ b/services/appwidget/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.appwidget-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.appwidget", - srcs: ["java/**/*.java"], + srcs: [":services.appwidget-sources"], libs: ["services.core"], } diff --git a/services/autofill/Android.bp b/services/autofill/Android.bp index 2768c18513143..539eb1a5220e6 100644 --- a/services/autofill/Android.bp +++ b/services/autofill/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.autofill-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.autofill", - srcs: ["java/**/*.java"], + srcs: [":services.autofill-sources"], libs: ["services.core"], } diff --git a/services/backup/Android.bp b/services/backup/Android.bp index ef03d83d4916d..f945d0f837a1a 100644 --- a/services/backup/Android.bp +++ b/services/backup/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.backup-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.backup", - srcs: ["java/**/*.java"], + srcs: [":services.backup-sources"], libs: ["services.core"], } diff --git a/services/companion/Android.bp b/services/companion/Android.bp index d2dac357a2278..9677a7d83bfb8 100644 --- a/services/companion/Android.bp +++ b/services/companion/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.companion-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.companion", - srcs: ["java/**/*.java"], + srcs: [":services.companion-sources"], libs: ["services.core"], } diff --git a/services/contentcapture/Android.bp b/services/contentcapture/Android.bp index 57e859ebe1217..96e20726fed3f 100644 --- a/services/contentcapture/Android.bp +++ b/services/contentcapture/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.contentcapture-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.contentcapture", - srcs: ["java/**/*.java"], + srcs: [":services.contentcapture-sources"], libs: ["services.core"], } diff --git a/services/contentsuggestions/Android.bp b/services/contentsuggestions/Android.bp index fc09d2e5196ab..d17f06f79e974 100644 --- a/services/contentsuggestions/Android.bp +++ b/services/contentsuggestions/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.contentsuggestions-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.contentsuggestions", - srcs: ["java/**/*.java"], + srcs: [":services.contentsuggestions-sources"], libs: ["services.core"], -} \ No newline at end of file +} diff --git a/services/core/Android.bp b/services/core/Android.bp index 4e75e006e1117..725303dc6f1b6 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -1,24 +1,21 @@ +filegroup { + name: "services.core-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.core.unboosted", - - aidl: { - include_dirs: [ - "frameworks/base/cmds/idmap2/idmap2d/aidl", - "frameworks/native/aidl/binder", - "frameworks/native/cmds/dumpstate/binder", - "system/core/storaged/binder", - "system/vold/binder", - "system/gsid/aidl", - ], - }, srcs: [ "java/**/*.java", ":dumpstate_aidl", + ":framework_native_aidl", + ":gsiservice_aidl", ":idmap2_aidl", ":installd_aidl", ":storaged_aidl", ":vold_aidl", - ":gsiservice_aidl", ":platform-compat-config", "java/com/android/server/EventLogTags.logtags", "java/com/android/server/am/EventLogTags.logtags", diff --git a/services/coverage/Android.bp b/services/coverage/Android.bp index 16c9c1bfcdaac..e4f54644df46a 100644 --- a/services/coverage/Android.bp +++ b/services/coverage/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.coverage-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.coverage", - srcs: ["java/**/*.java"], + srcs: [":services.coverage-sources"], libs: ["jacocoagent"], } diff --git a/services/devicepolicy/Android.bp b/services/devicepolicy/Android.bp index dbe0d811dbb66..2f6592bd33b06 100644 --- a/services/devicepolicy/Android.bp +++ b/services/devicepolicy/Android.bp @@ -1,6 +1,13 @@ +filegroup { + name: "services.devicepolicy-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.devicepolicy", - srcs: ["java/**/*.java"], + srcs: [":services.devicepolicy-sources"], libs: [ "services.core", diff --git a/services/midi/Android.bp b/services/midi/Android.bp index 3745e89e80349..20e00834d0ad3 100644 --- a/services/midi/Android.bp +++ b/services/midi/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.midi-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.midi", - srcs: ["java/**/*.java"], + srcs: [":services.midi-sources"], libs: ["services.core"], } diff --git a/services/net/Android.bp b/services/net/Android.bp index 2dabdb7d47ded..3babb0b0a133b 100644 --- a/services/net/Android.bp +++ b/services/net/Android.bp @@ -1,8 +1,15 @@ +filegroup { + name: "services.net-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.net", srcs: [ ":net-module-utils-srcs", - "java/**/*.java", + ":services.net-sources", ":tethering-manager", ], static_libs: [ @@ -23,4 +30,5 @@ filegroup { "java/android/net/util/NetdService.java", "java/android/net/util/NetworkConstants.java", ], + visibility: ["//frameworks/base/packages/Tethering"], } diff --git a/services/print/Android.bp b/services/print/Android.bp index 80a8c7560de65..aad24d72345b7 100644 --- a/services/print/Android.bp +++ b/services/print/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.print-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.print", - srcs: ["java/**/*.java"], + srcs: [":services.print-sources"], libs: ["services.core"], } diff --git a/services/restrictions/Android.bp b/services/restrictions/Android.bp index 979e891ada5ff..805858f7f654d 100644 --- a/services/restrictions/Android.bp +++ b/services/restrictions/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.restrictions-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.restrictions", - srcs: ["java/**/*.java"], + srcs: [":services.restrictions-sources"], libs: ["services.core"], } diff --git a/services/systemcaptions/Android.bp b/services/systemcaptions/Android.bp index 4e190b639b2ca..1ce3e665c665e 100644 --- a/services/systemcaptions/Android.bp +++ b/services/systemcaptions/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.systemcaptions-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.systemcaptions", - srcs: ["java/**/*.java"], + srcs: [":services.systemcaptions-sources"], libs: ["services.core"], } diff --git a/services/usage/Android.bp b/services/usage/Android.bp index 1064b6ed802f4..156bf330c1289 100644 --- a/services/usage/Android.bp +++ b/services/usage/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.usage-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.usage", - srcs: ["java/**/*.java"], + srcs: [":services.usage-sources"], libs: ["services.core"], } diff --git a/services/usb/Android.bp b/services/usb/Android.bp index 20855b70cabce..d2c973abbc746 100644 --- a/services/usb/Android.bp +++ b/services/usb/Android.bp @@ -1,6 +1,13 @@ +filegroup { + name: "services.usb-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.usb", - srcs: ["java/**/*.java"], + srcs: [":services.usb-sources"], libs: [ "services.core", diff --git a/services/voiceinteraction/Android.bp b/services/voiceinteraction/Android.bp index 390406f972640..85b96f34f4f64 100644 --- a/services/voiceinteraction/Android.bp +++ b/services/voiceinteraction/Android.bp @@ -1,5 +1,12 @@ +filegroup { + name: "services.voiceinteraction-sources", + srcs: ["java/**/*.java"], + path: "java", + visibility: ["//frameworks/base/services"], +} + java_library_static { name: "services.voiceinteraction", - srcs: ["java/**/*.java"], + srcs: [":services.voiceinteraction-sources"], libs: ["services.core"], } diff --git a/startop/iorap/Android.bp b/startop/iorap/Android.bp index 59a80fbae792d..993d1e1092b90 100644 --- a/startop/iorap/Android.bp +++ b/startop/iorap/Android.bp @@ -12,19 +12,24 @@ // See the License for the specific language governing permissions and // limitations under the License. +filegroup { + name: "services.startop.iorap-javasources", + srcs: ["src/**/*.java"], + path: "src", + visibility: ["//visibility:private"], +} + +filegroup { + name: "services.startop.iorap-sources", + srcs: [ + ":services.startop.iorap-javasources", + ":iorap-aidl", + ], + visibility: ["//frameworks/base/services:__subpackages__"], +} + java_library_static { name: "services.startop.iorap", - - aidl: { - include_dirs: [ - "system/iorap/binder", - ], - }, - + srcs: [":services.startop.iorap-sources"], libs: ["services.core"], - - srcs: [ - ":iorap-aidl", - "**/*.java", - ], } From 8d011ad625f418a4c0c0094a5f9d23dc792b6fb9 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 6 Dec 2019 16:28:52 +0900 Subject: [PATCH 2/2] Add android.annotation.Hide This change adds android.annotation.Hide class which can be used to hide an API without using the @hide javadoc tag. This opens up the possibility of running metalava over the compiled jar, which is expected to be much faster than when ran with source files. In the short-term, this will be only used inside services.jar and not for framework.jar. Bug: 139391334 Test: m Exempt-From-Owner-Approval: cherry-pick from internal Merged-In: I589f1deb63e621a96a76d2f613d283c2d3cdfd17 (cherry picked from commit 404b9b2cf2dfe15ee1b9e4bd16ade7362d7cd648) Change-Id: I589f1deb63e621a96a76d2f613d283c2d3cdfd17 --- core/java/android/annotation/Hide.java | 41 ++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 core/java/android/annotation/Hide.java diff --git a/core/java/android/annotation/Hide.java b/core/java/android/annotation/Hide.java new file mode 100644 index 0000000000000..c8e5a4a97ae79 --- /dev/null +++ b/core/java/android/annotation/Hide.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2019 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 android.annotation; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +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.PACKAGE; +import static java.lang.annotation.ElementType.TYPE; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Indicates that an API is hidden by default, in a similar fashion to the + *
@hide
javadoc tag. + * + *

Note that, in order for this to work, metalava has to be invoked with + * the flag {@code --hide-annotation android.annotation.Hide}. + * @hide + */ +@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE}) +@Retention(RetentionPolicy.CLASS) +public @interface Hide { +}