// Copyright (C) 2018 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 { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_av_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_av_license"], } apex_defaults { name: "com.android.media-defaults", bootclasspath_fragments: ["com.android.media-bootclasspath-fragment"], systemserverclasspath_fragments: ["com.android.media-systemserverclasspath-fragment"], multilib: { first: { // Extractor process runs only with the primary ABI. native_shared_libs: [ // Extractor plugins "libaacextractor", "libamrextractor", "libflacextractor", "libmidiextractor", "libmkvextractor", "libmp3extractor", "libmp4extractor", "libmpeg2extractor", "liboggextractor", "libwavextractor", ], // Transcoding service only run with primary ABI. binaries: [ "mediatranscoding", ], }, }, // JNI native_shared_libs: [ "libmediaparser-jni", "libmediaformatshaper", ], compile_multilib: "both", prebuilts: [ "code_coverage.policy", "com.android.media-mediatranscoding.rc", "com.android.media-mediatranscoding.32rc", "crash_dump.policy", "mediaextractor.policy", "media-linker-config", ], key: "com.android.media.key", certificate: ":com.android.media.certificate", // Use a custom AndroidManifest.xml used for API targeting. androidManifest: ":com.android.media-androidManifest", // IMPORTANT: q-launched-dcla-enabled-apex-module enables the build system to make // sure the package compatible to Android 10 in two ways(if flag APEX_BUILD_FOR_PRE_S_DEVICES=1 // is set): // - build the APEX package compatible to Android 10 // so that the package can be installed. // - build artifacts (lib/javalib/bin) against Android 10 SDK // so that the artifacts can run. // If the flag is not set, the package is built to be compatible with Android 12. defaults: ["q-launched-dcla-enabled-apex-module"], // Indicates that pre-installed version of this apex can be compressed. // Whether it actually will be compressed is controlled on per-device basis. compressible: true, } apex { name: "com.android.media", manifest: "manifest.json", defaults: ["com.android.media-defaults"], prebuilts: ["current_sdkinfo"], } linker_config { name: "media-linker-config", src: "linker.config.json", installable: false, } // Encapsulate the contributions made by the com.android.media to the bootclasspath. bootclasspath_fragment { name: "com.android.media-bootclasspath-fragment", contents: ["updatable-media"], apex_available: ["com.android.media"], api: { stub_libs: [ // Stubs for the APIs provided by updatable-media. This has to be // specified explicitly because updatable-media is not a // java_sdk_library. "framework-media", ], }, // The bootclasspath_fragments that provide APIs on which this depends. fragments: [ { apex: "com.android.art", module: "art-bootclasspath-fragment", }, ], // Additional stubs libraries that this fragment's contents use which are // not provided by another bootclasspath_fragment. additional_stubs: [ "android-non-updatable", ], // Additional hidden API flag files to override the defaults. This must only be // modified by the Soong or platform compat team. hidden_api: { max_target_o_low_priority: ["hiddenapi/hiddenapi-max-target-o-low-priority.txt"], // The following packages contain classes from other modules on the // bootclasspath. That means that the hidden API flags for this module // has to explicitly list every single class this module provides in // that package to differentiate them from the classes provided by other // modules. That can include private classes that are not part of the // API. split_packages: [ "android.media", ], // The following packages and all their subpackages currently only // contain classes from this bootclasspath_fragment. Listing a package // here won't prevent other bootclasspath modules from adding classes in // any of those packages but it will prevent them from adding those // classes into an API surface, e.g. public, system, etc.. Doing so will // result in a build failure due to inconsistent flags. package_prefixes: [ "android.media.internal", ], }, } // Encapsulate the contributions made by the com.android.media to the systemserverclasspath. systemserverclasspath_fragment { name: "com.android.media-systemserverclasspath-fragment", contents: ["service-media-s"], apex_available: ["com.android.media"], } filegroup { name: "com.android.media-androidManifest", srcs: ["AndroidManifest-media.xml"], } filegroup { name: "com.android.media.swcodec-androidManifest", srcs: ["AndroidManifest-swcodec.xml"], } apex_defaults { name: "com.android.media.swcodec-defaults", binaries: [ "mediaswcodec", ], native_shared_libs: [ "libcodec2_hidl@1.0", "libcodec2_hidl@1.1", "libcodec2_hidl@1.2", "libstagefright_foundation", ], prebuilts: [ "com.android.media.swcodec-mediaswcodec.rc", "com.android.media.swcodec-mediaswcodec.32rc", "com.android.media.swcodec-ld.config.txt", "mediaswcodec.policy", "code_coverage.policy", "crash_dump.policy", "mediaswcodec.xml", ], key: "com.android.media.swcodec.key", certificate: ":com.android.media.swcodec.certificate", // Use a custom AndroidManifest.xml used for API targeting. androidManifest: ":com.android.media.swcodec-androidManifest", // IMPORTANT: q-launched-dcla-enabled-apex-module enables the build system to make // sure the package compatible to Android 10 in two ways(if flag APEX_BUILD_FOR_PRE_S_DEVICES=1 // is set): // - build the APEX package compatible to Android 10 // so that the package can be installed. // - build artifacts (lib/javalib/bin) against Android 10 SDK // so that the artifacts can run. // If the flag is not set, the package is built to be compatible with Android 12. defaults: ["q-launched-dcla-enabled-apex-module"], // Indicates that pre-installed version of this apex can be compressed. // Whether it actually will be compressed is controlled on per-device basis. compressible: true, } // install as mediatranscoding.* and mediaswcodec.* instead of init.* // so we are ready for day we have more than 1 *rc file within the apex. prebuilt_etc { name: "com.android.media-mediatranscoding.rc", src: "mediatranscoding.rc", filename: "mediatranscoding.rc", installable: false, } prebuilt_etc { name: "com.android.media-mediatranscoding.32rc", src: "mediatranscoding.32rc", filename: "mediatranscoding.32rc", installable: false, } prebuilt_etc { name: "com.android.media.swcodec-mediaswcodec.rc", src: "mediaswcodec.rc", filename: "mediaswcodec.rc", installable: false, } prebuilt_etc { name: "com.android.media.swcodec-mediaswcodec.32rc", src: "mediaswcodec.32rc", filename: "mediaswcodec.32rc", installable: false, } prebuilt_etc { name: "com.android.media.swcodec-ld.config.txt", src: "ld.config.txt", filename: "ld.config.txt", installable: false, } apex { name: "com.android.media.swcodec", manifest: "manifest_codec.json", defaults: ["com.android.media.swcodec-defaults"], } apex_key { name: "com.android.media.key", public_key: "com.android.media.avbpubkey", private_key: "com.android.media.pem", } apex_key { name: "com.android.media.swcodec.key", public_key: "com.android.media.swcodec.avbpubkey", private_key: "com.android.media.swcodec.pem", } android_app_certificate { name: "com.android.media.certificate", certificate: "com.android.media", } android_app_certificate { name: "com.android.media.swcodec.certificate", certificate: "com.android.media.swcodec", }