// Copyright (C) 2022 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 {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

filegroup {
    name: "adservicesapk-filegroup",
    srcs: [
        "java/**/*.java",
    ],
}

android_app_certificate {
    name: "com.android.adservices.api.certificate",
    certificate: "com.android.adservices.api",
}

android_library {
    name: "AdServicesLib",
    sdk_version: "module_current",
    min_sdk_version: "30",
    srcs: [
        "java/**/*.java",
    ],
    libs: [
        "android.ext.adservices",
        "framework-annotations-lib",
    ],
    optional_uses_libs: ["android.ext.adservices"],
    manifest: "EmptyManifest.xml",
    static_libs: [
        "adservices-service-core",
        "androidx-constraintlayout_constraintlayout",
        "androidx.preference_preference",
        "androidx.fragment_fragment",
        "androidx.recyclerview_recyclerview",
        // TODO(b/230653497): Try to remove this.
        "androidx.room_room-runtime",
        "mobile_data_downloader_lib",
        "tflite_support_classifiers_java",
        "SettingsLibActionBarShadow",
        "SettingsLibSettingsTheme",
        "SettingsLibCollapsingToolbarBaseActivity",
        "SettingsLibMainSwitchPreference",
        "SettingsLibTopIntroPreference",
        "SettingsLibButtonPreference",
        "SettingsLibIntroPreference",
        "SettingsLibTwoTargetPreference",
        "SettingsLibFooterPreference",
    ],
    // TODO(b/269145496): Remove dex_preopt: false.
    dex_preopt: {
        enabled: false,
    },
    jarjar_rules: "jarjar_rules.txt",
    resource_dirs: ["res"],
    aaptflags: [
        // Don't compress *.tflite files. Compressed models cannot be loaded on device.
        "-0 .tflite",
    ],
    apex_available: [
        "com.android.adservices",
        "com.android.extservices",
    ],
    lint: {
        extra_check_modules: ["AdServicesProdLintChecker"],
    },
}

android_library {
    name: "AdServices-core",
    sdk_version: "module_current",
    // This is not enforced by PackageManager but we keep this
    // here since this APK is used for S- only.
    // TODO(b/263904312): Support for max_sdk_version.
    max_sdk_version: "32",
    min_sdk_version: "30",
    static_libs: ["AdServicesLib"],
    manifest: "AdExtServicesManifest.xml",
    apex_available: ["com.android.extservices"],
}

android_app {
    name: "AdServicesApk",
    sdk_version: "module_current",
    min_sdk_version: "Tiramisu",
    certificate: ":com.android.adservices.api.certificate",
    privileged: true,
    privapp_allowlist: ":privapp_allowlist_com.android.adservices.api.xml",
    srcs: [],
    static_libs: [
        "AdServicesLib",
    ],
    jarjar_rules: "jarjar_rules.txt",
    resource_dirs: ["publicres"],
    aaptflags: [
        // Don't compress *.tflite files. Compressed models cannot be loaded on device.
        "-0 .tflite",
    ],
    optimize: {
        shrink_resources: true,
    },
    apex_available: ["com.android.adservices"],
    updatable: true,
}

// Assets needs to be bundled via this android_library since our classes in service-core needs to
// load assets.
android_library {
    name: "adservices-assets",
    sdk_version: "module_current",
    min_sdk_version: "30",
    static_libs: [
        "androidx-constraintlayout_constraintlayout",
        "SettingsLibSettingsTheme",
    ],
    asset_dirs: [
        "assets",
    ],
    aaptflags: [
        // Don't compress *.tflite files. Compressed models cannot be loaded on device.
        "-0 .tflite",
    ],
    // Must use EmptyManifest.xml since "adservices-assets" will also be used by the
    // service-core tests. If we use the normal "AndroidManifest.xml", we will redeclare permissions
    // in the tests.
    // See b/228270294 for the error about duplicated permissions.
    manifest: "EmptyManifest.xml",
}
