// 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",
    updatable: true,
    java_libs: ["updatable-media"],
    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",
                // JNI
                "libmediaparser-jni"
            ],
        },
    },
    prebuilts: [
        "mediaextractor.policy",
        "code_coverage.policy",
        "crash_dump.policy",
    ],
    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: For the APEX to be installed on Android 10 (API 29),
    // min_sdk_version should be 29. This enables the build system to make
    // sure the package compatible to Android 10 in two ways:
    // - 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.
    min_sdk_version: "29",
}

apex {
    name: "com.android.media",
    manifest: "manifest.json",
    defaults: ["com.android.media-defaults"],
    prebuilts: [
        "media-linker-config",
    ],
}

linker_config {
    name: "media-linker-config",
    src: "linker.config.json",
    installable: false,
}

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",
    updatable: true,
    binaries: [
        "mediaswcodec",
    ],
    prebuilts: [
        "com.android.media.swcodec-mediaswcodec.rc",
        "com.android.media.swcodec-ld.config.txt",
        "mediaswcodec.policy",
        "code_coverage.policy",
        "crash_dump.policy",
        "mediaswcodec.xml",
    ],
    use_vendor: true,
    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: For the APEX to be installed on Android 10 (API 29),
    // min_sdk_version should be 29. This enables the build system to make
    // sure the package compatible to Android 10 in two ways:
    // - 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.
    min_sdk_version: "29",
}

prebuilt_etc {
    name: "com.android.media.swcodec-mediaswcodec.rc",
    src: "mediaswcodec.rc",
    filename: "init.rc",
    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",
}
