1package {
2    // See: http://go/android-license-faq
3    default_applicable_licenses: ["Android-Apache-2.0"],
4    default_team: "trendy_team_android_storage",
5}
6
7android_app {
8    name: "MediaProvider",
9    manifest: "AndroidManifest.xml",
10
11    static_libs: [
12        "modules-utils-backgroundthread",
13        "androidx.appcompat_appcompat",
14        "androidx.core_core",
15        "androidx.legacy_legacy-support-core-ui",
16        "androidx.lifecycle_lifecycle-extensions",
17        "androidx.preference_preference",
18        "androidx.recyclerview_recyclerview",
19        "com.google.android.material_material",
20        "guava",
21        "modules-utils-build",
22        "modules-utils-uieventlogger-interface",
23        "glide-prebuilt",
24        "glide-integration-recyclerview-prebuilt",
25        "glide-integration-webpdecoder-prebuilt",
26        "glide-gifdecoder-prebuilt",
27        "glide-disklrucache-prebuilt",
28        "glide-annotation-and-compiler-prebuilt",
29        "androidx.fragment_fragment",
30        "androidx.vectordrawable_vectordrawable-animated",
31        "androidx.exifinterface_exifinterface",
32        "androidx.work_work-runtime",
33        "exoplayer-mediaprovider-ui",
34        "modules-utils-shell-command-handler",
35        "SettingsLibProfileSelector",
36        "SettingsLibSelectorWithWidgetPreference",
37        "mediaprovider_flags_java_lib",
38    ],
39
40    libs: [
41        "unsupportedappusage",
42        "app-compat-annotations",
43        "framework-annotations-lib",
44        "framework-configinfrastructure",
45        "framework-mediaprovider.impl",
46        "framework-media.stubs.module_lib",
47        "framework-statsd",
48        "keepanno-annotations",
49    ],
50
51    jni_libs: [
52        "libfuse_jni",
53        "libfuse",
54        "libleveldb_jni",
55    ],
56    use_embedded_native_libs: true,
57
58    resource_dirs: [
59        "res",
60    ],
61    srcs: [
62        ":mediaprovider-sources",
63    ],
64
65    optimize: {
66        shrink: true,
67        optimize: false,
68        obfuscate: false,
69        shrink_resources: true,
70        proguard_flags_files: ["proguard.flags"],
71    },
72
73    plugins: [
74        "error_prone_mediaprovider",
75        "glide-annotation-processor",
76    ],
77    jarjar_rules: "jarjar-rules.txt",
78    sdk_version: "module_current",
79    min_sdk_version: "30",
80
81    certificate: "media",
82    privileged: true,
83    privapp_allowlist: ":privapp_allowlist_com.android.providers.media.module.xml",
84
85    aaptflags: ["--custom-package com.android.providers.media"],
86
87    errorprone: {
88        javacflags: [
89            "-Xep:FallThrough:ERROR",
90            "-Xep:GuardedBy:ERROR",
91            "-Xep:StreamResourceLeak:ERROR",
92
93            // Local checkers specific to this module
94            "-Xep:MediaProviderLocaleRoot:ERROR",
95            "-Xep:MediaProviderMimeType:ERROR",
96        ],
97    },
98
99    lint: {
100        baseline_filename: "lint-baseline.xml",
101    },
102
103    apex_available: [
104        "com.android.mediaprovider",
105    ],
106}
107
108// Used by MediaProvider and MediaProviderTests
109filegroup {
110    name: "mediaprovider-sources",
111    srcs: [
112        "src/**/*.aidl",
113        "src/**/*.java",
114        ":statslog-mediaprovider-java-gen",
115    ],
116}
117
118// This is defined to give LegacyMediaProvider the bare minimum it needs
119// to keep the legacy database schema working while also building
120// against "system_current"
121java_library {
122    name: "mediaprovider-database",
123    srcs: [
124        "src/com/android/providers/media/util/DatabaseUtils.java",
125        "src/com/android/providers/media/util/FileUtils.java",
126        "src/com/android/providers/media/util/ForegroundThread.java",
127        "src/com/android/providers/media/util/Logging.java",
128        "src/com/android/providers/media/util/MimeUtils.java",
129        "src/com/android/providers/media/util/StringUtils.java",
130        "src/com/android/providers/media/playlist/*.java",
131        "src/com/android/providers/media/dao/*.java",
132    ],
133    sdk_version: "module_current",
134    min_sdk_version: "30",
135    static_libs: [
136        "modules-utils-backgroundthread",
137        "modules-utils-build",
138        "guava",
139    ],
140    libs: [
141        "androidx.annotation_annotation",
142        "framework-annotations-lib",
143        "framework-mediaprovider",
144    ],
145    lint: {
146        baseline_filename: "lint-baseline2.xml",
147    },
148}
149
150platform_compat_config {
151    name: "media-provider-platform-compat-config",
152    src: ":MediaProvider",
153}
154
155genrule {
156    name: "statslog-mediaprovider-java-gen",
157    tools: ["stats-log-api-gen"],
158    cmd: "$(location stats-log-api-gen) --java $(out) --module mediaprovider" +
159        " --javaPackage com.android.providers.media --javaClass MediaProviderStatsLog" +
160        " --minApiLevel 30",
161    out: ["com/android/providers/media/MediaProviderStatsLog.java"],
162}
163
164prebuilt_etc {
165    name: "preinstalled-packages-com.android.providers.media.module.xml",
166    src: "preinstalled-packages-com.android.providers.media.module.xml",
167    sub_dir: "sysconfig",
168}
169
170sh_binary {
171    name: "media_provider",
172    src: "cli/media_provider_cli_wrapper.sh",
173}
174
175aconfig_declarations {
176    name: "mediaprovider_flags",
177    package: "com.android.providers.media.flags",
178    container: "com.android.mediaprovider",
179    srcs: ["mediaprovider_flags.aconfig"],
180}
181
182java_aconfig_library {
183    name: "mediaprovider_flags_java_lib",
184    aconfig_declarations: "mediaprovider_flags",
185    min_sdk_version: "30",
186    sdk_version: "module_current",
187    libs: ["framework-configinfrastructure"],
188    apex_available: [
189        "com.android.mediaprovider",
190    ],
191}
192