xref: /aosp_15_r20/frameworks/base/core/java/Android.bp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1package {
2    // See: http://go/android-license-faq
3    // A large-scale-change added 'default_applicable_licenses' to import
4    // all of the 'license_kinds' from "frameworks_base_license"
5    // to get the below license kinds:
6    //   SPDX-license-identifier-Apache-2.0
7    //   SPDX-license-identifier-BSD
8    //   legacy_unencumbered
9    default_applicable_licenses: ["frameworks_base_license"],
10}
11
12aidl_library {
13    name: "HardwareBuffer_aidl",
14    hdrs: ["android/hardware/HardwareBuffer.aidl"],
15}
16
17filegroup {
18    name: "framework-core-sources",
19    srcs: [
20        "**/*.java",
21        "**/*.aidl",
22        ":systemfeatures-gen-srcs",
23        ":framework-nfc-non-updatable-sources",
24        ":messagequeue-gen",
25        ":ranging_stack_mock_initializer",
26    ],
27    // Exactly one MessageQueue.java will be added to srcs by messagequeue-gen
28    exclude_srcs: [
29        "android/os/*MessageQueue/**/*.java",
30        "android/ranging/**/*.java",
31        ":dynamic_instrumentation_manager_aidl_sources",
32    ],
33    visibility: ["//frameworks/base"],
34}
35
36//Mock to allow service registry for ranging stack.
37//TODO(b/331206299): Remove this after RELEASE_RANGING_STACK is ramped up to next.
38soong_config_module_type {
39    name: "ranging_stack_framework_mock_init",
40    module_type: "genrule",
41    config_namespace: "bootclasspath",
42    bool_variables: [
43        "release_ranging_stack",
44    ],
45    properties: [
46        "srcs",
47        "cmd",
48        "out",
49    ],
50}
51
52// The actual RangingFrameworkInitializer is present in packages/modules/Uwb/ranging/framework.
53// Mock RangingFrameworkInitializer does nothing and allows to successfully build
54// SystemServiceRegistry after registering for system service in SystemServiceRegistry both with
55// and without build flag RELEASE_RANGING_STACK enabled.
56ranging_stack_framework_mock_init {
57    name: "ranging_stack_mock_initializer",
58    soong_config_variables: {
59        release_ranging_stack: {
60            cmd: "touch $(out)",
61            // Adding an empty file as out is mandatory.
62            out: ["android/ranging/empty_ranging_fw.txt"],
63            conditions_default: {
64                srcs: ["android/ranging/mock/RangingFrameworkInitializer.java"],
65                cmd: "mkdir -p android/ranging/; cp $(in) $(out);",
66                out: ["android/ranging/RangingFrameworkInitializer.java"],
67            },
68        },
69    },
70}
71
72// Add selected MessageQueue.java implementation to srcs
73soong_config_module_type {
74    name: "release_package_messagequeue_implementation_srcs",
75    module_type: "genrule",
76    config_namespace: "messagequeue",
77    value_variables: ["release_package_messagequeue_implementation"],
78    properties: [
79        "srcs",
80    ],
81}
82
83// Output the selected android/os/MessageQueue.java implementation
84release_package_messagequeue_implementation_srcs {
85    name: "messagequeue-gen",
86    soong_config_variables: {
87        release_package_messagequeue_implementation: {
88            srcs: ["android/os/%s"],
89            conditions_default: {
90                srcs: ["android/os/LegacyMessageQueue/MessageQueue.java"],
91            },
92        },
93    },
94    cmd: "mkdir -p android/os/; cp $(in) $(out);",
95    out: ["android/os/MessageQueue.java"],
96}
97
98aidl_library {
99    name: "IDropBoxManagerService_aidl",
100    srcs: [
101        "com/android/internal/os/IDropBoxManagerService.aidl",
102    ],
103    hdrs: [
104        "android/os/DropBoxManager.aidl",
105    ],
106}
107
108filegroup {
109    name: "IBinaryTransparencyService.aidl",
110    srcs: ["com/android/internal/os/IBinaryTransparencyService.aidl"],
111}
112
113filegroup {
114    name: "ITracingServiceProxy.aidl",
115    srcs: ["android/tracing/ITracingServiceProxy.aidl"],
116}
117
118filegroup {
119    name: "TraceReportParams.aidl",
120    srcs: ["android/tracing/TraceReportParams.aidl"],
121}
122
123filegroup {
124    name: "dynamic_instrumentation_manager_aidl_sources",
125    srcs: ["android/os/instrumentation/*.aidl"],
126}
127
128aidl_interface {
129    name: "dynamic_instrumentation_manager_aidl",
130    srcs: [":dynamic_instrumentation_manager_aidl_sources"],
131    unstable: true,
132}
133
134filegroup {
135    name: "framework-internal-display-sources",
136    srcs: ["com/android/internal/display/BrightnessSynchronizer.java"],
137    visibility: ["//frameworks/base/services/tests/mockingservicestests"],
138}
139
140// These are subset of framework-core-sources that are needed by the
141// android.test.mock library. The implementation of android.test.mock references
142// private members of various components to allow mocking of classes that cannot
143// be mocked without access to those internal implementation details.
144filegroup {
145    name: "framework-core-sources-for-test-mock",
146    srcs: [
147        "android/accounts/AccountManagerCallback.java",
148        "android/accounts/AccountManagerFuture.java",
149        "android/accounts/AccountManager.java",
150        "android/accounts/AccountsException.java",
151        "android/accounts/AuthenticatorException.java",
152        "android/accounts/OperationCanceledException.java",
153        "android/app/Application.java",
154        "android/app/IApplicationThread.aidl",
155        "android/app/IServiceConnection.aidl",
156        "android/app/PackageDeleteObserver.java",
157        "android/content/ComponentCallbacks2.java",
158        "android/content/ComponentCallbacks.java",
159        "android/content/ContentInterface.java",
160        "android/content/ContentProvider.java",
161        "android/content/ContentProviderNative.java",
162        "android/content/ContentResolver.java",
163        "android/content/Context.java",
164        "android/content/ContextWrapper.java",
165        "android/content/DialogInterface.java",
166        "android/content/IContentProvider.java",
167        "android/content/Intent.java",
168        "android/content/IntentSender.java",
169        "android/content/OperationApplicationException.java",
170        "android/content/pm/ActivityInfo.java",
171        "android/content/pm/ApplicationInfo.java",
172        "android/content/pm/InstantAppInfo.java",
173        "android/content/pm/IPackageDataObserver.aidl",
174        "android/content/pm/KeySet.java",
175        "android/content/pm/PackageManager.java",
176        "android/content/pm/VerifierDeviceIdentity.java",
177        "android/content/res/Resources.java",
178        "android/database/CrossProcessCursor.java",
179        "android/database/CrossProcessCursorWrapper.java",
180        "android/database/Cursor.java",
181        "android/database/CursorWrapper.java",
182        "android/os/Binder.java",
183        "android/os/Bundle.java",
184        "android/os/IBinder.java",
185        "android/os/IInterface.java",
186        "android/os/Parcelable.java",
187        "android/os/ParcelFileDescriptor.java",
188        "android/os/RemoteException.java",
189        "android/os/storage/VolumeInfo.java",
190        "android/util/AndroidException.java",
191        "android/view/DisplayAdjustments.java",
192        "android/view/ViewDebug.java",
193    ],
194    visibility: ["//frameworks/base/test-mock"],
195}
196
197filegroup {
198    name: "libincident_aidl",
199    srcs: [
200        "android/os/IIncidentDumpCallback.aidl",
201        "android/os/IIncidentManager.aidl",
202        "android/os/IIncidentReportStatusListener.aidl",
203    ],
204}
205
206filegroup {
207    name: "libvibrator_aidl",
208    srcs: [
209        "android/os/IExternalVibrationController.aidl",
210        "android/os/IExternalVibratorService.aidl",
211        "android/os/ExternalVibrationScale.aidl",
212    ],
213}
214
215filegroup {
216    name: "libpowermanager_aidl",
217    srcs: [
218        "android/os/Temperature.aidl",
219        "android/os/CoolingDevice.aidl",
220        "android/os/IThermalEventListener.aidl",
221        "android/os/IThermalHeadroomListener.aidl",
222        "android/os/IThermalStatusListener.aidl",
223        "android/os/IThermalService.aidl",
224        "android/os/IPowerManager.aidl",
225        "android/os/IWakeLockCallback.aidl",
226    ],
227}
228
229aidl_interface {
230    name: "android.os.hintmanager_aidl",
231    defaults: [
232        "android.hardware.power-aidl",
233    ],
234    srcs: [
235        "android/os/CpuHeadroomParamsInternal.aidl",
236        "android/os/GpuHeadroomParamsInternal.aidl",
237        "android/os/IHintManager.aidl",
238        "android/os/IHintSession.aidl",
239        "android/os/SessionCreationConfig.aidl",
240    ],
241    unstable: true,
242    backend: {
243        java: {
244            sdk_version: "module_current",
245            enabled: true,
246        },
247        cpp: {
248            enabled: false,
249        },
250        ndk: {
251            enabled: true,
252        },
253    },
254}
255
256aidl_library {
257    name: "ILogcatManagerService_aidl",
258    srcs: ["android/os/logcat/ILogcatManagerService.aidl"],
259}
260
261genrule {
262    name: "statslog-framework-java-gen",
263    tools: ["stats-log-api-gen"],
264    cmd: "$(location stats-log-api-gen) --java $(out) --module framework" +
265        " --javaPackage com.android.internal.util --javaClass FrameworkStatsLog --worksource",
266    out: ["com/android/internal/util/FrameworkStatsLog.java"],
267}
268
269// Library that provides functionality to log UiEvents in framework space.
270// If this functionality is needed outside the framework, the interfaces library
271// can be re-used and a local implementation is needed.
272java_library {
273    name: "uieventloggerlib",
274    srcs: [
275        "com/android/internal/logging/UiEventLoggerImpl.java",
276        ":statslog-framework-java-gen",
277    ],
278    libs: [
279        "androidx.annotation_annotation",
280    ],
281    static_libs: ["modules-utils-uieventlogger-interface"],
282}
283
284java_library {
285    name: "modules-utils-locallog",
286    srcs: ["android/util/LocalLog.java"],
287    libs: ["unsupportedappusage"],
288    sdk_version: "module_current",
289    min_sdk_version: "30",
290    apex_available: [
291        "//apex_available:anyapex",
292        "//apex_available:platform",
293    ],
294    visibility: ["//visibility:public"],
295}
296
297// keep these files in sync with the package/Tethering/jarjar-rules.txt and
298// package/Connectivity/jarjar-rules.txt for the tethering module and connectivity module.
299filegroup {
300    name: "framework-connectivity-shared-srcs",
301    srcs: [
302        "android/util/IndentingPrintWriter.java",
303        "android/util/LocalLog.java",
304        // This should be android.util.IndentingPrintWriter, but it's not available in all branches.
305        "com/android/internal/util/IndentingPrintWriter.java",
306        "com/android/internal/util/MessageUtils.java",
307        "com/android/internal/util/WakeupMessage.java",
308    ],
309}
310
311// keep these files in sync with the packages/modules/Connectivity jarjar-rules.txt for
312// the connectivity module.
313filegroup {
314    name: "framework-connectivity-api-shared-srcs",
315    srcs: [
316        "android/util/IndentingPrintWriter.java",
317        "com/android/internal/util/FileRotator.java",
318    ],
319}
320
321// keep these files in sync with the apex/jobscheduler/service jarjar-rules.txt for
322// the jobscheduler module.
323filegroup {
324    name: "framework-jobscheduler-shared-srcs",
325    srcs: [
326        ":modules-utils-preconditions-srcs",
327        "com/android/internal/util/ArrayUtils.java",
328        "com/android/internal/util/BitUtils.java",
329        "com/android/internal/util/CollectionUtils.java",
330        "com/android/internal/util/ConcurrentUtils.java",
331        "com/android/internal/util/DumpUtils.java",
332        "com/android/internal/util/FastPrintWriter.java",
333        "com/android/internal/util/FunctionalUtils.java",
334        "com/android/internal/util/ParseUtils.java",
335        "com/android/internal/util/RingBufferIndices.java",
336        "com/android/internal/util/StatLogger.java",
337        "com/android/internal/util/XmlUtils.java",
338    ],
339}
340
341// Keep these files in sync with the apex/permission/jarjar-rules.txt for the permission module.
342filegroup {
343    name: "framework-permission-s-shared-srcs",
344    srcs: [
345        ":modules-utils-preconditions-srcs",
346        "com/android/internal/infra/AndroidFuture.java",
347        "com/android/internal/infra/ServiceConnector.java",
348        "com/android/internal/infra/AndroidFuture.aidl",
349        "com/android/internal/infra/IAndroidFuture.aidl",
350        "android/os/HandlerExecutor.java",
351    ],
352}
353
354// Keep these files in sync with the apex/permission/jarjar-rules.txt for the permission module.
355filegroup {
356    name: "service-permission-shared-srcs",
357    srcs: [
358        "android/util/IndentingPrintWriter.java",
359        "com/android/internal/util/dump/DualDumpOutputStream.java",
360    ],
361}
362
363filegroup {
364    name: "service-crashrecovery-shared-srcs",
365    srcs: [
366        "android/util/IndentingPrintWriter.java",
367    ],
368}
369
370filegroup {
371    name: "incremental_aidl",
372    srcs: [
373        "android/os/incremental/IIncrementalServiceConnector.aidl",
374        "android/os/incremental/IncrementalFileSystemControlParcel.aidl",
375    ],
376}
377
378filegroup {
379    name: "dataloader_aidl",
380    srcs: [
381        "android/content/pm/DataLoaderParamsParcel.aidl",
382        "android/content/pm/DataLoaderType.aidl",
383        "android/content/pm/FileSystemControlParcel.aidl",
384        "android/content/pm/IDataLoader.aidl",
385        "android/content/pm/IDataLoaderManager.aidl",
386        "android/content/pm/InstallationFileParcel.aidl",
387        "android/content/pm/InstallationFileLocation.aidl",
388        "android/content/pm/IDataLoaderStatusListener.aidl",
389        "android/content/pm/IPackageInstallerSessionFileSystemConnector.aidl",
390    ],
391}
392
393filegroup {
394    name: "incremental_manager_aidl",
395    srcs: [
396        "android/os/incremental/IIncrementalService.aidl",
397        "android/os/incremental/IStorageLoadingProgressListener.aidl",
398        "android/os/incremental/IncrementalNewFileParams.aidl",
399        "android/os/incremental/IStorageHealthListener.aidl",
400        "android/os/incremental/PerUidReadTimeouts.aidl",
401        "android/os/incremental/StorageHealthCheckParams.aidl",
402    ],
403}
404
405filegroup {
406    name: "activity_manager_procstate_aidl",
407    srcs: [
408        "android/app/ProcessStateEnum.aidl",
409    ],
410}
411
412filegroup {
413    name: "hwbinder-stubs-srcs",
414    srcs: [
415        "android/os/HidlSupport.java",
416        "android/os/HidlMemory.java",
417        "android/os/HwBinder.java",
418        "android/os/HwBlob.java",
419        "android/os/HwParcel.java",
420        "android/os/IHwBinder.java",
421        "android/os/IHwInterface.java",
422        "android/os/DeadObjectException.java",
423        "android/os/DeadSystemException.java",
424        "android/os/NativeHandle.java",
425        "android/os/RemoteException.java",
426        "android/util/AndroidException.java",
427    ],
428    visibility: [
429        "//frameworks/base",
430        "//frameworks/base/api",
431    ],
432}
433
434cc_defaults {
435    name: "incremental_default",
436    cflags: [
437        "-Wall",
438        "-Wextra",
439        "-Wextra-semi",
440        "-Werror",
441        "-Wzero-as-null-pointer-constant",
442        "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
443    ],
444    shared_libs: [
445        "libbinder",
446        "libutils",
447    ],
448    aidl: {
449        include_dirs: [
450            "frameworks/native/aidl/binder",
451        ],
452        export_aidl_headers: true,
453    },
454}
455
456cc_library {
457    name: "libincremental_aidl-cpp",
458    srcs: [
459        ":incremental_aidl",
460    ],
461    defaults: ["incremental_default"],
462}
463
464cc_library {
465    name: "libdataloader_aidl-cpp",
466    srcs: [
467        ":dataloader_aidl",
468    ],
469    defaults: ["incremental_default"],
470    shared_libs: [
471        "libincremental_aidl-cpp",
472    ],
473}
474
475cc_library {
476    name: "libincremental_manager_aidl-cpp",
477    srcs: [
478        ":incremental_manager_aidl",
479    ],
480    defaults: ["incremental_default"],
481    shared_libs: [
482        "libincremental_aidl-cpp",
483        "libdataloader_aidl-cpp",
484    ],
485}
486
487cc_library {
488    name: "libactivity_manager_procstate_aidl-cpp",
489    host_supported: true,
490    srcs: [
491        ":activity_manager_procstate_aidl",
492    ],
493    aidl: {
494        export_aidl_headers: true,
495    },
496}
497
498// Build Rust bindings for PermissionController. Needed by keystore2.
499aidl_interface {
500    name: "android.os.permissions_aidl",
501    unstable: true,
502    local_include_dir: ".",
503    srcs: [
504        "android/os/IPermissionController.aidl",
505    ],
506    backend: {
507        rust: {
508            enabled: true,
509            apex_available: [
510                "//apex_available:platform",
511                "com.android.virt", // for virtualizationservice
512            ],
513        },
514    },
515}
516
517// Build Rust bindings for remote provisioning. Needed by keystore2.
518aidl_interface {
519    name: "android.security.rkp_aidl",
520    unstable: true,
521    srcs: [
522        "android/security/rkp/*.aidl",
523    ],
524    backend: {
525        rust: {
526            enabled: true,
527            apex_available: [
528                "//apex_available:platform",
529                "com.android.virt",
530            ],
531        },
532    },
533}
534
535aidl_interface {
536    name: "android.debug_aidl",
537    unstable: true,
538    srcs: [
539        "android/debug/AdbTransportType.aidl",
540        "android/debug/FingerprintAndPairDevice.aidl",
541        "android/debug/IAdbCallback.aidl",
542        "android/debug/IAdbManager.aidl",
543        "android/debug/PairDevice.aidl",
544    ],
545    backend: {
546        cpp: {
547            enabled: true,
548        },
549    },
550}
551
552aidl_interface {
553    name: "android.companion.virtual.virtualdevice_aidl",
554    unstable: true,
555    host_supported: true,
556    srcs: [
557        "android/companion/virtualnative/IVirtualDeviceManagerNative.aidl",
558    ],
559    local_include_dir: ".",
560}
561
562filegroup {
563    name: "frameworks-base-java-overview",
564    srcs: ["overview.html"],
565}
566
567// Avoid including Parcelable classes as we don't want to have two copies of
568// Parcelable cross the libraries. This is used by telephony-common (frameworks/opt/telephony)
569// and TeleService app (packages/services/Telephony).
570filegroup {
571    name: "framework-telephony-common-shared-srcs",
572    srcs: [
573        "android/os/RegistrantList.java",
574        "android/os/Registrant.java",
575        "android/util/IndentingPrintWriter.java",
576        "android/util/LocalLog.java",
577        "android/util/TimeUtils.java",
578        "com/android/internal/os/SomeArgs.java",
579        "com/android/internal/util/AsyncChannel.java",
580        "com/android/internal/util/AsyncService.java",
581        "com/android/internal/util/BitwiseInputStream.java",
582        "com/android/internal/util/HexDump.java",
583        "com/android/internal/util/IndentingPrintWriter.java",
584        "com/android/internal/util/UserIcons.java",
585    ],
586}
587
588filegroup {
589    name: "framework-ims-common-shared-srcs",
590    srcs: [
591        ":modules-utils-preconditions-srcs",
592        "android/os/RegistrantList.java",
593        "android/os/Registrant.java",
594        "com/android/internal/os/SomeArgs.java",
595    ],
596}
597
598// This file group is used by service fuzzer
599filegroup {
600    name: "framework-core-sources-for-fuzzers",
601    srcs: [
602        "android/os/IInterface.java",
603        "android/os/Binder.java",
604        "android/os/IBinder.java",
605        "android/os/Parcelable.java",
606    ],
607}
608
609aidl_interface {
610    name: "android.os.statsbootstrap_aidl",
611    unstable: true,
612    srcs: [
613        "android/os/IStatsBootstrapAtomService.aidl",
614        "android/os/StatsBootstrapAtom.aidl",
615        "android/os/StatsBootstrapAtomValue.aidl",
616    ],
617    backend: {
618        cpp: {
619            enabled: true,
620        },
621    },
622}
623
624// utility classes statically linked into wifi-service
625filegroup {
626    name: "framework-wifi-service-shared-srcs",
627    srcs: [
628        "android/net/InterfaceConfiguration.java",
629        "android/util/BackupUtils.java",
630        "android/util/Rational.java",
631        "com/android/internal/util/HexDump.java",
632        "com/android/internal/util/MessageUtils.java",
633        "com/android/internal/util/WakeupMessage.java",
634    ],
635    visibility: [
636        "//frameworks/opt/net/wifi/service",
637        "//packages/modules/Wifi/service",
638    ],
639}
640
641// protolog start
642filegroup {
643    name: "protolog-common-src",
644    srcs: [
645        "com/android/internal/protolog/common/**/*.java",
646    ],
647}
648
649java_library {
650    name: "protolog-group",
651    srcs: [
652        "com/android/internal/protolog/common/IProtoLogGroup.java",
653    ],
654}
655
656// PackageManager common
657filegroup {
658    name: "framework-pm-common-shared-srcs",
659    srcs: [
660        "com/android/server/pm/pkg/AndroidPackage.java",
661        "com/android/server/pm/pkg/AndroidPackageSplit.java",
662    ],
663}
664
665filegroup {
666    name: "protolog-impl",
667    srcs: [
668        "com/android/internal/protolog/ProtoLogImpl.java",
669    ],
670}
671
672java_library {
673    name: "protolog-lib",
674    srcs: [
675        "com/android/internal/protolog/ProtoLogImpl.java",
676        "com/android/internal/protolog/ProtoLogViewerConfigReader.java",
677    ],
678    static_libs: [
679        "perfetto_trace_javastream_protos_jarjar",
680    ],
681}
682
683java_library {
684    name: "protolog-groups",
685    srcs: [
686        "com/android/internal/protolog/WmProtoLogGroups.java",
687        ":protolog-common-src",
688    ],
689}
690
691// protolog end
692
693java_system_features_srcs {
694    name: "systemfeatures-gen-srcs",
695    full_class_name: "com.android.internal.pm.RoSystemFeatures",
696    visibility: ["//visibility:private"],
697}
698