From b9653a95dfa2a121800160b47af7869072620ba6 Mon Sep 17 00:00:00 2001 From: Alexander Dorokhine Date: Fri, 4 Dec 2020 12:17:30 -0800 Subject: [PATCH 1/6] Suppress [CallbackInterface] metalava rule for mainline modules. This rule is already suppressed for main framework code in framework/Android.bp, but mainline uses a different set of metalava flags. Android API council says this is the right thing to do for libraries which run only on Java 8+, which is true of all mainline modules and framework code. Bug: 172180369 Test: AppSearch BatchResultCallback now builds Merged-In: If81cda012b4627c8018ae54a0f0932ee39d6fd96 Change-Id: If81cda012b4627c8018ae54a0f0932ee39d6fd96 --- apex/Android.bp | 1 + 1 file changed, 1 insertion(+) diff --git a/apex/Android.bp b/apex/Android.bp index 784e3a859851f..04eb9de457987 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -15,6 +15,7 @@ mainline_stubs_args = "--error UnhiddenSystemApi " + "--hide BroadcastBehavior " + + "--hide CallbackInterface " + "--hide DeprecationMismatch " + "--hide HiddenSuperclass " + "--hide HiddenTypedefConstant " + From 42fd56a03bebcd9060fb5a4945d9fd941c5532c3 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Tue, 15 Dec 2020 18:28:20 +0000 Subject: [PATCH 2/6] Limit build visibility of modules in apex/... This changes the default visibility of soong modules in this directory to __subpackages__, from the current public default. This helps accidental dependencies sneaking in without intent from the module owner. Bug: 175604587 Test: m nothing Exempt-From-Owner-Approval: cp Merged-In: I1df8b8e087d27f62ce8c09d7e6e32d511efdba6b Change-Id: I1df8b8e087d27f62ce8c09d7e6e32d511efdba6b --- apex/Android.bp | 15 +++++++++++++++ apex/blobstore/framework/Android.bp | 1 + apex/blobstore/service/Android.bp | 5 +++++ apex/jobscheduler/framework/Android.bp | 1 + apex/jobscheduler/service/Android.bp | 8 ++++++++ apex/media/Android.bp | 20 ++++++++++++++++++++ apex/media/framework/Android.bp | 5 +++++ apex/permission/framework/Android.bp | 1 + apex/permission/service/Android.bp | 1 + 9 files changed, 57 insertions(+) create mode 100644 apex/media/Android.bp diff --git a/apex/Android.bp b/apex/Android.bp index 04eb9de457987..f635539ed50c8 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +package { + default_visibility: [":__subpackages__"], +} + mainline_stubs_args = "--error UnhiddenSystemApi " + "--hide BroadcastBehavior " + @@ -129,6 +133,13 @@ java_defaults { enabled: true, sdk_version: "module_current", }, + defaults_visibility: [ + ":__subpackages__", + "//frameworks/base/libs/hwui", + "//frameworks/base/wifi", + "//packages/modules:__subpackages__", + "//packages/providers/MediaProvider:__subpackages__", + ], } // Defaults for mainline module system server provided java_sdk_library instances. @@ -140,6 +151,10 @@ java_defaults { enabled: true, sdk_version: "module_current", }, + defaults_visibility: [ + ":__subpackages__", + "//packages/modules:__subpackages__", + ], } stubs_defaults { diff --git a/apex/blobstore/framework/Android.bp b/apex/blobstore/framework/Android.bp index 24693511117c1..349955368b17d 100644 --- a/apex/blobstore/framework/Android.bp +++ b/apex/blobstore/framework/Android.bp @@ -19,6 +19,7 @@ filegroup { "java/**/*.aidl" ], path: "java", + visibility: ["//frameworks/base"], } java_library { diff --git a/apex/blobstore/service/Android.bp b/apex/blobstore/service/Android.bp index 22b0cbe91e235..f6cbac1628da2 100644 --- a/apex/blobstore/service/Android.bp +++ b/apex/blobstore/service/Android.bp @@ -25,4 +25,9 @@ java_library { "services.core", "services.usage", ], + visibility: [ + // These are required until blobstore is properly unbundled. + "//frameworks/base/services", + "//frameworks/base/services/tests/mockingservicestests", + ], } diff --git a/apex/jobscheduler/framework/Android.bp b/apex/jobscheduler/framework/Android.bp index ec074262fb134..23f5614f018c9 100644 --- a/apex/jobscheduler/framework/Android.bp +++ b/apex/jobscheduler/framework/Android.bp @@ -8,6 +8,7 @@ filegroup { "java/android/os/IDeviceIdleController.aidl", ], path: "java", + visibility: ["//frameworks/base"], } java_library { diff --git a/apex/jobscheduler/service/Android.bp b/apex/jobscheduler/service/Android.bp index 69a9fd844729e..6ddba690bd6f3 100644 --- a/apex/jobscheduler/service/Android.bp +++ b/apex/jobscheduler/service/Android.bp @@ -13,4 +13,12 @@ java_library { "framework", "services.core", ], + visibility: [ + "//frameworks/base/apex/jobscheduler:__subpackages__", + // These are required until jobscheduler is properly unbundled. + "//frameworks/base/services", + "//frameworks/base/services/tests/mockingservicestests", + "//frameworks/base/services/tests/servicestests", + "//frameworks/base/tests/JobSchedulerPerfTests", + ], } diff --git a/apex/media/Android.bp b/apex/media/Android.bp new file mode 100644 index 0000000000000..5f1bd374df00a --- /dev/null +++ b/apex/media/Android.bp @@ -0,0 +1,20 @@ +// Copyright (C) 2020 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_visibility: [ + ":__subpackages__", + "//frameworks/av/apex", + "//frameworks/av/apex/testing", + ], +} diff --git a/apex/media/framework/Android.bp b/apex/media/framework/Android.bp index 228e9baeba4c5..faa9278709f0d 100644 --- a/apex/media/framework/Android.bp +++ b/apex/media/framework/Android.bp @@ -48,6 +48,10 @@ java_library { "test_com.android.media", ], min_sdk_version: "29", + visibility: [ + "//frameworks/av/apex:__subpackages__", + "//frameworks/base", // For framework-all + ], } filegroup { @@ -57,6 +61,7 @@ filegroup { ":mediasession2-java-srcs", ":mediasession2-aidl-srcs", ], + visibility: ["//frameworks/base"], } filegroup { diff --git a/apex/permission/framework/Android.bp b/apex/permission/framework/Android.bp index c0560f61460f4..36b5decbcacaf 100644 --- a/apex/permission/framework/Android.bp +++ b/apex/permission/framework/Android.bp @@ -19,6 +19,7 @@ filegroup { "java/**/*.aidl", ], path: "java", + visibility: ["//frameworks/base"], } java_sdk_library { diff --git a/apex/permission/service/Android.bp b/apex/permission/service/Android.bp index b7d843352d8e8..f6c315604870e 100644 --- a/apex/permission/service/Android.bp +++ b/apex/permission/service/Android.bp @@ -18,6 +18,7 @@ filegroup { "java/**/*.java", ], path: "java", + visibility: ["//frameworks/base/services"], } java_sdk_library { From dd124428cace8696d2b9939a9027ffaeeddb2474 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Mon, 25 Jan 2021 10:20:46 +0000 Subject: [PATCH 3/6] Set installable: false on apex jars by default They shouldn't be installed, so don't generate install rules. Test: m Merged-In: I87a6a577b98d1140b5882d4c72f875914d551287 Change-Id: I87a6a577b98d1140b5882d4c72f875914d551287 --- apex/Android.bp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apex/Android.bp b/apex/Android.bp index f635539ed50c8..04d6e0abc310c 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -97,6 +97,10 @@ java_defaults { sdk_version: "module_current", }, + // installable implies we'll create a non-apex (platform) variant, which + // we shouldn't ordinarily need (and it can create issues), so disable that. + installable: false, + // Configure framework module specific metalava options. droiddoc_options: [mainline_stubs_args], From 09159170d770f2c8b53ea18030c4b5528b7d953b Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Fri, 29 May 2020 09:50:20 +0100 Subject: [PATCH 4/6] Prevent default use of framework module implementation Prevent dependencies that do not specify an sdk_version from accessing the implementation library of a framework module by default and force them to use stubs instead. Bug: 155164730 Test: m nothing Merged-In: Ib60e538a4017857eefa3465e56745c00306887e1 Change-Id: Ib60e538a4017857eefa3465e56745c00306887e1 --- apex/Android.bp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apex/Android.bp b/apex/Android.bp index 04d6e0abc310c..4de76c8fe441d 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -84,6 +84,10 @@ java_defaults { // entry. shared_library: false, + // Prevent dependencies that do not specify an sdk_version from accessing the + // implementation library by default and force them to use stubs instead. + default_to_stubs: true, + // Enable api lint. This will eventually become the default for java_sdk_library // but it cannot yet be turned on because some usages have not been cleaned up. // TODO(b/156126315) - Remove when no longer needed. From 486eb760ac127c5093e9966b4aa9418eb552594e Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Tue, 18 Aug 2020 12:52:44 +0100 Subject: [PATCH 5/6] Make framework-all composed of other framework jars (partial cherry-pick) This avoids duplicating the compilation of the module java source code, as well as maintaining the compilation rules in two places. Bug: 149906971 Test: m FrameworkServicesRoboTests Change-Id: I1cea62aaedb7e653648130e3d315761c0c9aece4 Merged-In: I1cea62aaedb7e653648130e3d315761c0c9aece4 --- apex/Android.bp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apex/Android.bp b/apex/Android.bp index 4de76c8fe441d..74e31cc2ed853 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -115,7 +115,10 @@ java_defaults { stubs_library_visibility: ["//visibility:public"], // Hide impl library and stub sources - impl_library_visibility: [":__package__"], + impl_library_visibility: [ + ":__package__", + "//frameworks/base", // For framework-all + ], stubs_source_visibility: ["//visibility:private"], defaults_visibility: ["//visibility:private"], From 622dc78b58827cce06d5abb914c7d6f27d28021c Mon Sep 17 00:00:00 2001 From: Liz Kammer Date: Thu, 15 Oct 2020 10:28:13 -0700 Subject: [PATCH 6/6] Correct visibility to use __pkg__ Test: m nothing Merged-In: I2dcf7f0f24948422e0ffd4880846313a75d467d2 Change-Id: I2dcf7f0f24948422e0ffd4880846313a75d467d2 --- apex/Android.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/Android.bp b/apex/Android.bp index 74e31cc2ed853..29f7d80e322f9 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -116,7 +116,7 @@ java_defaults { // Hide impl library and stub sources impl_library_visibility: [ - ":__package__", + ":__pkg__", "//frameworks/base", // For framework-all ], stubs_source_visibility: ["//visibility:private"],