From c81df3f859afc36fa0726d38be222767aa6d8767 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Mon, 6 Jan 2020 13:30:59 +0900 Subject: [PATCH] Platform shouldn't directly link to jars in APEXes The non-updatable part of the platform shouldn't directly link to the boot jars in APEXes. Ensure this by 1) setting the visibility property for the boot jars so that they are not visible to non-APEX modules and 2) setting the apex_available property so that the boot jars are only built for the corresponding APEXes, but not for others. Bug: b/146167933 Bug: b/146218515 Bug: b/147200698 Test: m Change-Id: I251fabd773bc31f46d572d143c72dd9162f3f0a6 --- Android.bp | 3 ++- apex/appsearch/framework/Android.bp | 7 +++++++ apex/media/framework/Android.bp | 7 +++++++ apex/sdkextensions/framework/Android.bp | 5 +++++ apex/statsd/framework/Android.bp | 11 ++++++++++- packages/Tethering/Android.bp | 1 + packages/Tethering/common/TetheringLib/Android.bp | 10 ++++++++++ wifi/Android.bp | 5 +++++ 8 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Android.bp b/Android.bp index 477f0272efa0e..4f7d41120e8f0 100644 --- a/Android.bp +++ b/Android.bp @@ -489,7 +489,8 @@ java_library { // TODO(b/140299412): should be framework-wifi-stubs "framework-wifi", "ike-stubs", - // TODO(jiyong): add more stubs for APEXes here + // TODO(b/147200698): should be the stub of framework-tethering + "framework-tethering", ], sdk_version: "core_platform", apex_available: ["//apex_available:platform"], diff --git a/apex/appsearch/framework/Android.bp b/apex/appsearch/framework/Android.bp index 3dc5a2c10b6b6..1f30dda21ef76 100644 --- a/apex/appsearch/framework/Android.bp +++ b/apex/appsearch/framework/Android.bp @@ -26,9 +26,16 @@ java_library { installable: true, sdk_version: "core_platform", // TODO(b/146218515) should be core_current srcs: [":framework-appsearch-sources"], + hostdex: true, // for hiddenapi check libs: [ "framework-minus-apex", // TODO(b/146218515) should be framework-system-stubs ], + visibility: [ + "//frameworks/base/apex/appsearch:__subpackages__", + // TODO(b/146218515) remove this when framework is built with the stub of appsearch + "//frameworks/base", + ], + apex_available: ["com.android.appsearch"], } metalava_appsearch_docs_args = diff --git a/apex/media/framework/Android.bp b/apex/media/framework/Android.bp index 6bd0086681a75..18382a4884285 100644 --- a/apex/media/framework/Android.bp +++ b/apex/media/framework/Android.bp @@ -55,6 +55,13 @@ java_library { jarjar_rules: "jarjar_rules.txt", plugins: ["java_api_finder"], + + hostdex: true, // for hiddenapi check + visibility: ["//frameworks/av/apex:__subpackages__"], + apex_available: [ + "com.android.media", + "test_com.android.media", + ], } filegroup { diff --git a/apex/sdkextensions/framework/Android.bp b/apex/sdkextensions/framework/Android.bp index 5504f4e5dd8e1..dd174734df6df 100644 --- a/apex/sdkextensions/framework/Android.bp +++ b/apex/sdkextensions/framework/Android.bp @@ -36,6 +36,11 @@ java_library { "//frameworks/base/apex/sdkextensions", "//frameworks/base/apex/sdkextensions/testing", ], + hostdex: true, // for hiddenapi check + apex_available: [ + "com.android.sdkext", + "test_com.android.sdkext", + ], } droidstubs { diff --git a/apex/statsd/framework/Android.bp b/apex/statsd/framework/Android.bp index a2b0577fe0018..0b46645ad06f8 100644 --- a/apex/statsd/framework/Android.bp +++ b/apex/statsd/framework/Android.bp @@ -37,7 +37,16 @@ java_library { // TODO(b/146230220): Use framework-system-stubs instead. "android_system_stubs_current", ], - // TODO:(b/146210774): Add apex_available field. + hostdex: true, // for hiddenapi check + visibility: [ + "//frameworks/base/apex/statsd:__subpackages__", + //TODO(b/146167933) remove this when framework is built with framework-statsd-stubs + "//frameworks/base", + ], + apex_available: [ + "com.android.os.statsd", + "test_com.android.os.statsd", + ], } droidstubs { diff --git a/packages/Tethering/Android.bp b/packages/Tethering/Android.bp index 0be853a81fb2f..2061561d6052e 100644 --- a/packages/Tethering/Android.bp +++ b/packages/Tethering/Android.bp @@ -123,4 +123,5 @@ android_app { use_embedded_native_libs: true, // The permission configuration *must* be included to ensure security of the device required: ["NetworkPermissionConfig"], + apex_available: ["com.android.tethering"], } diff --git a/packages/Tethering/common/TetheringLib/Android.bp b/packages/Tethering/common/TetheringLib/Android.bp index 5785707cb9c5e..264ce440f59f1 100644 --- a/packages/Tethering/common/TetheringLib/Android.bp +++ b/packages/Tethering/common/TetheringLib/Android.bp @@ -47,6 +47,16 @@ java_library { libs: [ "android_system_stubs_current", ], + + hostdex: true, // for hiddenapi check + visibility: [ + "//frameworks/base/packages/Tethering:__subpackages__", + //TODO(b/147200698) remove below lines when the platform is built with stubs + "//frameworks/base", + "//frameworks/base/services", + "//frameworks/base/services/core", + ], + apex_available: ["com.android.tethering"], } filegroup { diff --git a/wifi/Android.bp b/wifi/Android.bp index 09d5386dcfc5b..180368cbd9f76 100644 --- a/wifi/Android.bp +++ b/wifi/Android.bp @@ -67,10 +67,15 @@ java_library { optimize: { enabled: false }, + hostdex: true, // for hiddenapi check visibility: [ "//frameworks/base", // TODO(b/140299412) remove once all dependencies are fixed "//frameworks/opt/net/wifi/service:__subpackages__", ] + test_access_hidden_api_whitelist, + apex_available: [ + "com.android.wifi", + "test_com.android.wifi", + ], plugins: ["java_api_finder"], }