Separate the internal state of AttributionSource from the class to make it a simple AIDL we can translate automatically to native - keeping Java and native parts in sync. This would allow writing a thin native lib for checking attribution source permissions which would be used to teach camera and audio about attributions. Deinfe an AIDL interface for passing around an attribution source and opr performing permission checker oprations allowing native and Java permission checks on attribution chains to be handled. The Java side permission checker functions are in a dedicated permisison checker service on top of which sits the PermissionChecker. We expose similar PermissionChecker native APIs sitting on top of the same remote interface. The nice thing is that we have native and Java permisison checkers in sync sharing remoting code and being close in shape. For now the PermissionChecker in Java is divorced from the PermissionManager but in T we will consider how to unify them, either by an extension object on the PermmissionManager or APIs on the PermissionManager, or another approach, and then migrate clients off the PermissionChecker APIs. bug: 158792096 Test: atest CtsPermission5TestCases Change-Id: I4e050e78b2361cbf524cc213802e0fef5b487f67
543 lines
20 KiB
Plaintext
543 lines
20 KiB
Plaintext
// Copyright (C) 2016 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.
|
|
|
|
// Build the master framework library.
|
|
|
|
// READ ME: ########################################################
|
|
//
|
|
// When updating this list of aidl files, consider if that aidl is
|
|
// part of the SDK API. If it is, also add it to the list in Android.mk
|
|
// that is preprocessed and distributed with the SDK. This list should
|
|
// not contain any aidl files for parcelables, but the one below should
|
|
// if you intend for 3rd parties to be able to send those objects
|
|
// across process boundaries.
|
|
//
|
|
// READ ME: ########################################################
|
|
|
|
package {
|
|
default_applicable_licenses: ["frameworks_base_license"],
|
|
}
|
|
|
|
// Added automatically by a large-scale-change that took the approach of
|
|
// 'apply every license found to every target'. While this makes sure we respect
|
|
// every license restriction, it may not be entirely correct.
|
|
//
|
|
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
|
|
//
|
|
// Please consider splitting the single license below into multiple licenses,
|
|
// taking care not to lose any license_kind information, and overriding the
|
|
// default license using the 'licenses: [...]' property on targets as needed.
|
|
//
|
|
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
|
|
// to attach the license to, and including a comment whether the files may be
|
|
// used in the current project.
|
|
// See: http://go/android-license-faq
|
|
license {
|
|
name: "frameworks_base_license",
|
|
visibility: [":__subpackages__"],
|
|
license_kinds: [
|
|
"SPDX-license-identifier-Apache-2.0",
|
|
"SPDX-license-identifier-BSD",
|
|
"SPDX-license-identifier-CC-BY",
|
|
"SPDX-license-identifier-CPL-1.0",
|
|
"SPDX-license-identifier-GPL",
|
|
"SPDX-license-identifier-GPL-2.0",
|
|
"SPDX-license-identifier-MIT",
|
|
"SPDX-license-identifier-Unicode-DFS",
|
|
"SPDX-license-identifier-W3C",
|
|
"legacy_unencumbered",
|
|
],
|
|
license_text: [
|
|
"NOTICE",
|
|
],
|
|
}
|
|
|
|
filegroup {
|
|
name: "framework-non-updatable-sources",
|
|
srcs: [
|
|
// Java/AIDL sources under frameworks/base
|
|
":framework-blobstore-sources",
|
|
":framework-core-sources",
|
|
":framework-drm-sources",
|
|
":framework-graphics-nonupdatable-sources",
|
|
":framework-jobscheduler-sources", // jobscheduler is not a module for R
|
|
":framework-keystore-sources",
|
|
":framework-identity-sources",
|
|
":framework-location-sources",
|
|
":framework-lowpan-sources",
|
|
":framework-mca-effect-sources",
|
|
":framework-mca-filterfw-sources",
|
|
":framework-mca-filterpacks-sources",
|
|
":framework-media-sources",
|
|
":framework-mms-sources",
|
|
":framework-opengl-sources",
|
|
":framework-rs-sources",
|
|
":framework-sax-sources",
|
|
":framework-telecomm-sources",
|
|
":framework-telephony-common-sources",
|
|
":framework-telephony-sources",
|
|
":framework-vcn-util-sources",
|
|
":framework-wifi-annotations",
|
|
":framework-wifi-non-updatable-sources",
|
|
":PacProcessor-aidl-sources",
|
|
":ProxyHandler-aidl-sources",
|
|
":net-utils-framework-common-srcs",
|
|
|
|
// AIDL from frameworks/base/native/
|
|
":platform-compat-native-aidl",
|
|
|
|
// AIDL sources from external directories
|
|
":android.hardware.security.keymint-V1-java-source",
|
|
":android.hardware.security.secureclock-V1-java-source",
|
|
":android.security.apc-java-source",
|
|
":android.security.authorization-java-source",
|
|
":android.security.maintenance-java-source",
|
|
":android.security.vpnprofilestore-java-source",
|
|
":android.system.keystore2-V1-java-source",
|
|
":credstore_aidl",
|
|
":dumpstate_aidl",
|
|
":framework_native_aidl",
|
|
":gatekeeper_aidl",
|
|
":gsiservice_aidl",
|
|
":idmap2_aidl",
|
|
":idmap2_core_aidl",
|
|
":incidentcompanion_aidl",
|
|
":inputconstants_aidl",
|
|
":installd_aidl",
|
|
":libaudioclient_aidl",
|
|
":libbinder_aidl",
|
|
":libbluetooth-binder-aidl",
|
|
":libcamera_client_aidl",
|
|
":libcamera_client_framework_aidl",
|
|
":packagemanager_aidl",
|
|
":libupdate_engine_aidl",
|
|
":resourcemanager_aidl",
|
|
":storaged_aidl",
|
|
":vold_aidl",
|
|
":deviceproductinfoconstants_aidl",
|
|
|
|
// For the generated R.java and Manifest.java
|
|
":framework-res{.aapt.srcjar}",
|
|
|
|
// etc.
|
|
":framework-javastream-protos",
|
|
":statslog-framework-java-gen", // FrameworkStatsLog.java
|
|
":audio_policy_configuration_V7_0",
|
|
],
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-updatable-stubs-module_libs_api",
|
|
static_libs: [
|
|
"android.net.ipsec.ike.stubs.module_lib",
|
|
"framework-appsearch.stubs.module_lib",
|
|
"framework-connectivity.stubs.module_lib",
|
|
"framework-graphics.stubs.module_lib",
|
|
"framework-media.stubs.module_lib",
|
|
"framework-mediaprovider.stubs.module_lib",
|
|
"framework-permission.stubs.module_lib",
|
|
"framework-permission-s.stubs.module_lib",
|
|
"framework-scheduling.stubs.module_lib",
|
|
"framework-sdkextensions.stubs.module_lib",
|
|
"framework-statsd.stubs.module_lib",
|
|
"framework-tethering.stubs.module_lib",
|
|
"framework-wifi.stubs.module_lib",
|
|
],
|
|
sdk_version: "module_current",
|
|
visibility: ["//visibility:private"],
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-all",
|
|
installable: false,
|
|
static_libs: [
|
|
"android.net.ipsec.ike.impl",
|
|
"framework-minus-apex",
|
|
"framework-appsearch.impl",
|
|
"framework-connectivity.impl",
|
|
"framework-graphics.impl",
|
|
"framework-mediaprovider.impl",
|
|
"framework-permission.impl",
|
|
"framework-permission-s.impl",
|
|
"framework-scheduling.impl",
|
|
"framework-sdkextensions.impl",
|
|
"framework-statsd.impl",
|
|
"framework-tethering.impl",
|
|
"framework-wifi.impl",
|
|
"updatable-media",
|
|
],
|
|
apex_available: ["//apex_available:platform"],
|
|
sdk_version: "core_platform",
|
|
visibility: [
|
|
// DO NOT ADD ANY MORE ENTRIES TO THIS LIST
|
|
"//external/robolectric-shadows:__subpackages__",
|
|
"//frameworks/layoutlib:__subpackages__",
|
|
],
|
|
}
|
|
|
|
// AIDL files under these paths are mixture of public and private ones.
|
|
// They shouldn't be exported across module boundaries.
|
|
java_defaults {
|
|
name: "framework-aidl-export-defaults",
|
|
aidl: {
|
|
export_include_dirs: [
|
|
"core/java",
|
|
"drm/java",
|
|
"graphics/java",
|
|
"identity/java",
|
|
"keystore/java",
|
|
"location/java",
|
|
"lowpan/java",
|
|
"media/java",
|
|
"media/mca/effect/java",
|
|
"media/mca/filterfw/java",
|
|
"media/mca/filterpacks/java",
|
|
"mms/java",
|
|
"opengl/java",
|
|
"rs/java",
|
|
"sax/java",
|
|
"telecomm/java",
|
|
|
|
"apex/media/aidl/stable",
|
|
// TODO(b/147699819): remove this
|
|
"telephony/java",
|
|
],
|
|
},
|
|
}
|
|
|
|
// Collection of classes that are generated from non-Java files that are not listed in
|
|
// framework_srcs. These have no or very limited dependency to the framework.
|
|
java_library {
|
|
name: "framework-internal-utils",
|
|
static_libs: [
|
|
"apex_aidl_interface-java",
|
|
"framework-protos",
|
|
"updatable-driver-protos",
|
|
"android.hidl.base-V1.0-java",
|
|
"android.hardware.cas-V1.0-java",
|
|
"android.hardware.cas-V1.1-java",
|
|
"android.hardware.cas-V1.2-java",
|
|
"android.hardware.contexthub-V1.0-java",
|
|
"android.hardware.contexthub-V1.1-java",
|
|
"android.hardware.contexthub-V1.2-java",
|
|
"android.hardware.gnss-V1.0-java",
|
|
"android.hardware.gnss-V2.1-java",
|
|
"android.hardware.health-V1.0-java-constants",
|
|
"android.hardware.radio-V1.0-java",
|
|
"android.hardware.radio-V1.1-java",
|
|
"android.hardware.radio-V1.2-java",
|
|
"android.hardware.radio-V1.3-java",
|
|
"android.hardware.radio-V1.4-java",
|
|
"android.hardware.radio-V1.5-java",
|
|
"android.hardware.radio-V1.6-java",
|
|
"android.hardware.thermal-V1.0-java-constants",
|
|
"android.hardware.thermal-V1.0-java",
|
|
"android.hardware.thermal-V1.1-java",
|
|
"android.hardware.thermal-V2.0-java",
|
|
"android.hardware.tv.input-V1.0-java-constants",
|
|
"android.hardware.tv.tuner-V1.0-java-constants",
|
|
"android.hardware.tv.tuner-V1.1-java-constants",
|
|
"android.hardware.usb-V1.0-java-constants",
|
|
"android.hardware.usb-V1.1-java-constants",
|
|
"android.hardware.usb-V1.2-java-constants",
|
|
"android.hardware.usb.gadget-V1.0-java",
|
|
"android.hardware.usb.gadget-V1.1-java",
|
|
"android.hardware.usb.gadget-V1.2-java",
|
|
"android.hardware.vibrator-V1.0-java",
|
|
"android.hardware.vibrator-V1.1-java",
|
|
"android.hardware.vibrator-V1.2-java",
|
|
"android.hardware.vibrator-V1.3-java",
|
|
"android.hardware.vibrator-V2-java",
|
|
"android.system.suspend.control.internal-java",
|
|
"devicepolicyprotosnano",
|
|
|
|
"com.android.sysprop.apex",
|
|
"com.android.sysprop.init",
|
|
"com.android.sysprop.localization",
|
|
"PlatformProperties",
|
|
],
|
|
sdk_version: "core_platform",
|
|
installable: false,
|
|
}
|
|
|
|
java_defaults {
|
|
name: "framework-minus-apex-defaults",
|
|
defaults: ["framework-aidl-export-defaults"],
|
|
srcs: [
|
|
":framework-non-updatable-sources",
|
|
"core/java/**/*.logtags",
|
|
],
|
|
aidl: {
|
|
generate_get_transaction_name: true,
|
|
local_include_dirs: [
|
|
"media/aidl",
|
|
// TODO: move to include_dirs when migrated to packages/modules
|
|
"packages/Connectivity/framework/aidl-export",
|
|
],
|
|
include_dirs: ["frameworks/av/aidl"],
|
|
},
|
|
dxflags: [
|
|
"--core-library",
|
|
"--multi-dex",
|
|
],
|
|
jarjar_rules: "framework-jarjar-rules.txt",
|
|
javac_shard_size: 150,
|
|
plugins: [
|
|
"view-inspector-annotation-processor",
|
|
"staledataclass-annotation-processor",
|
|
"error_prone_android_framework",
|
|
],
|
|
required: [
|
|
"framework-platform-compat-config",
|
|
// TODO: remove gps_debug and protolog.conf.json when the build system propagates "required" properly.
|
|
"gps_debug.conf",
|
|
"icu4j-platform-compat-config",
|
|
"protolog.conf.json.gz",
|
|
"services-platform-compat-config",
|
|
"documents-ui-compat-config",
|
|
"calendar-provider-compat-config",
|
|
],
|
|
libs: [
|
|
"app-compat-annotations",
|
|
"ext",
|
|
"framework-updatable-stubs-module_libs_api",
|
|
"unsupportedappusage",
|
|
],
|
|
sdk_version: "core_platform",
|
|
static_libs: [
|
|
"bouncycastle-repackaged-unbundled",
|
|
"framework-internal-utils",
|
|
// If MimeMap ever becomes its own APEX, then this dependency would need to be removed
|
|
// in favor of an API stubs dependency in java_library "framework" below.
|
|
"mimemap",
|
|
"av-types-aidl-java",
|
|
"tv_tuner_resource_manager_aidl_interface-java",
|
|
"soundtrigger_middleware-aidl-java",
|
|
"modules-utils-os",
|
|
"framework-permission-aidl-java",
|
|
],
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-minus-apex",
|
|
defaults: ["framework-minus-apex-defaults"],
|
|
installable: true,
|
|
// For backwards compatibility.
|
|
stem: "framework",
|
|
apex_available: ["//apex_available:platform"],
|
|
visibility: [
|
|
"//frameworks/base",
|
|
// TODO(b/147128803) remove the below lines
|
|
"//frameworks/base/apex/appsearch/framework",
|
|
"//frameworks/base/apex/blobstore/framework",
|
|
"//frameworks/base/apex/jobscheduler/framework",
|
|
"//frameworks/base/packages/Tethering/tests/unit",
|
|
"//packages/modules/Connectivity/Tethering/tests/unit",
|
|
],
|
|
errorprone: {
|
|
javacflags: [
|
|
"-Xep:AndroidFrameworkBinderIdentity:ERROR",
|
|
"-Xep:AndroidFrameworkCompatChange:ERROR",
|
|
"-Xep:AndroidFrameworkUid:ERROR",
|
|
],
|
|
},
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-minus-apex-intdefs",
|
|
defaults: ["framework-minus-apex-defaults"],
|
|
plugins: ["intdef-annotation-processor"],
|
|
}
|
|
|
|
// This "framework" module is NOT installed to the device. It's
|
|
// "framework-minus-apex" that gets installed to the device. Note that
|
|
// the filename is still framework.jar (via the stem property) for
|
|
// compatibility reason. The purpose of this module is to provide
|
|
// framework APIs (both public and private) for bundled apps.
|
|
// "framework-minus-apex" can't be used for the purpose because 1)
|
|
// many apps have already hardcoded the name "framework" and
|
|
// 2) it lacks API symbols from updatable modules - as it's clear from
|
|
// its suffix "-minus-apex".
|
|
java_library {
|
|
name: "framework",
|
|
defaults: ["framework-aidl-export-defaults"],
|
|
installable: false, // this lib is a build-only library
|
|
static_libs: [
|
|
"app-compat-annotations",
|
|
"framework-minus-apex",
|
|
"framework-appsearch.impl", // TODO(b/146218515): should be removed
|
|
"framework-updatable-stubs-module_libs_api",
|
|
],
|
|
sdk_version: "core_platform",
|
|
apex_available: ["//apex_available:platform"],
|
|
}
|
|
|
|
platform_compat_config {
|
|
name: "framework-platform-compat-config",
|
|
src: ":framework-minus-apex",
|
|
}
|
|
|
|
filegroup {
|
|
name: "framework-annotations",
|
|
srcs: [
|
|
"core/java/android/annotation/AnyThread.java",
|
|
"core/java/android/annotation/AppIdInt.java",
|
|
"core/java/android/annotation/BytesLong.java",
|
|
"core/java/android/annotation/CallbackExecutor.java",
|
|
"core/java/android/annotation/CallSuper.java",
|
|
"core/java/android/annotation/CheckResult.java",
|
|
"core/java/android/annotation/CurrentTimeMillisLong.java",
|
|
"core/java/android/annotation/CurrentTimeSecondsLong.java",
|
|
"core/java/android/annotation/DrawableRes.java",
|
|
"core/java/android/annotation/DurationMillisLong.java",
|
|
"core/java/android/annotation/Hide.java",
|
|
"core/java/android/annotation/IntDef.java",
|
|
"core/java/android/annotation/IntRange.java",
|
|
"core/java/android/annotation/LongDef.java",
|
|
"core/java/android/annotation/MainThread.java",
|
|
"core/java/android/annotation/NonNull.java",
|
|
"core/java/android/annotation/Nullable.java",
|
|
"core/java/android/annotation/RequiresNoPermission.java",
|
|
"core/java/android/annotation/RequiresPermission.java",
|
|
"core/java/android/annotation/SdkConstant.java",
|
|
"core/java/android/annotation/StringDef.java",
|
|
"core/java/android/annotation/SystemApi.java",
|
|
"core/java/android/annotation/SystemService.java",
|
|
"core/java/android/annotation/TestApi.java",
|
|
"core/java/android/annotation/UserIdInt.java",
|
|
"core/java/android/annotation/WorkerThread.java",
|
|
"core/java/com/android/internal/annotations/GuardedBy.java",
|
|
"core/java/com/android/internal/annotations/Immutable.java",
|
|
"core/java/com/android/internal/annotations/VisibleForTesting.java",
|
|
],
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-annotations-lib",
|
|
srcs: [":framework-annotations"],
|
|
sdk_version: "core_current",
|
|
}
|
|
|
|
filegroup {
|
|
name: "framework-ike-shared-srcs",
|
|
visibility: ["//packages/modules/IPsec"],
|
|
srcs: [
|
|
"core/java/android/net/annotations/PolicyDirection.java",
|
|
"core/java/com/android/internal/util/HexDump.java",
|
|
"core/java/com/android/internal/util/IState.java",
|
|
"core/java/com/android/internal/util/State.java",
|
|
"core/java/com/android/internal/util/StateMachine.java",
|
|
"services/core/java/com/android/server/vcn/util/PersistableBundleUtils.java",
|
|
"telephony/java/android/telephony/Annotation.java",
|
|
],
|
|
}
|
|
|
|
filegroup {
|
|
name: "framework-networkstack-shared-srcs",
|
|
srcs: [
|
|
// TODO: remove these annotations as soon as we can use andoid.support.annotations.*
|
|
":framework-annotations",
|
|
"core/java/android/net/DhcpResults.java",
|
|
"core/java/android/util/IndentingPrintWriter.java",
|
|
"core/java/android/util/LocalLog.java",
|
|
"core/java/com/android/internal/util/HexDump.java",
|
|
"core/java/com/android/internal/util/IndentingPrintWriter.java",
|
|
"core/java/com/android/internal/util/IState.java",
|
|
"core/java/com/android/internal/util/MessageUtils.java",
|
|
"core/java/com/android/internal/util/Preconditions.java",
|
|
"core/java/com/android/internal/util/RingBufferIndices.java",
|
|
"core/java/com/android/internal/util/State.java",
|
|
"core/java/com/android/internal/util/StateMachine.java",
|
|
"core/java/com/android/internal/util/WakeupMessage.java",
|
|
"core/java/com/android/internal/util/TokenBucket.java",
|
|
],
|
|
}
|
|
|
|
// Build ext.jar
|
|
// ============================================================
|
|
java_library {
|
|
name: "ext",
|
|
installable: true,
|
|
sdk_version: "core_platform",
|
|
static_libs: [
|
|
"libphonenumber-platform",
|
|
"tagsoup",
|
|
"rappor",
|
|
],
|
|
dxflags: ["--core-library"],
|
|
}
|
|
|
|
// utility classes statically linked into framework-wifi and dynamically linked
|
|
// into wifi-service
|
|
java_library {
|
|
name: "framework-wifi-util-lib",
|
|
sdk_version: "module_current",
|
|
min_sdk_version: "30",
|
|
srcs: [
|
|
"core/java/android/os/HandlerExecutor.java",
|
|
"core/java/com/android/internal/util/AsyncChannel.java",
|
|
"core/java/com/android/internal/util/AsyncService.java",
|
|
"core/java/com/android/internal/util/Protocol.java",
|
|
"core/java/com/android/internal/util/Preconditions.java",
|
|
"telephony/java/android/telephony/Annotation.java",
|
|
":net-utils-framework-wifi-common-srcs",
|
|
],
|
|
libs: [
|
|
"framework-annotations-lib",
|
|
"framework-connectivity.stubs.module_lib",
|
|
"unsupportedappusage",
|
|
],
|
|
visibility: [
|
|
"//frameworks/base/wifi",
|
|
"//frameworks/base/services/net",
|
|
"//packages/modules/Wifi/framework",
|
|
],
|
|
}
|
|
|
|
// TODO(b/145644363): move this to under StubLibraries.bp or ApiDocs.bp
|
|
metalava_framework_docs_args = "--manifest $(location core/res/AndroidManifest.xml) " +
|
|
"--hide-package com.android.server " +
|
|
"--hide-package android.audio.policy.configuration.V7_0 " +
|
|
"--error UnhiddenSystemApi " +
|
|
"--hide RequiresPermission " +
|
|
"--hide CallbackInterface " +
|
|
"--hide MissingPermission --hide BroadcastBehavior " +
|
|
"--hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol " +
|
|
"--hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo " +
|
|
"--error NoSettingsProvider " +
|
|
"--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* " +
|
|
"--api-lint-ignore-prefix android.icu. " +
|
|
"--api-lint-ignore-prefix java. " +
|
|
"--api-lint-ignore-prefix junit. " +
|
|
"--api-lint-ignore-prefix org. "
|
|
|
|
filegroup {
|
|
name: "framework-non-updatable-stub-sources",
|
|
srcs: [
|
|
":framework-mime-sources", // mimemap builds separately but has no separate droidstubs.
|
|
":framework-non-updatable-sources",
|
|
":opt-telephony-srcs",
|
|
":opt-net-voip-srcs",
|
|
"core/java/**/*.logtags",
|
|
"**/package.html",
|
|
],
|
|
visibility: ["//visibility:private"],
|
|
}
|
|
|
|
build = [
|
|
"StubLibraries.bp",
|
|
"ApiDocs.bp",
|
|
"ProtoLibraries.bp",
|
|
]
|