xref: /aosp_15_r20/external/exoplayer/Android.bp (revision 30877f796caf59d855b10b687a5d6b3918d765cb)
1//
2// Copyright (C) 2019 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17// README:
18// - Before expanding the visiblity of any of the targets in this file,
19//   please add a test that covers the new dependencies in the TEST_MAPPING file
20//   of this directory. We cannot guarantee that ExoPlayer dependents will not
21//   be accidentally broken if it is not covered by presubmit.
22// - The names in this files follow the pattern exoplayer-dep_name[-module_name]
23//   where dep_name identifies the client, and module_name disambiguates the
24//   module for cases where necessary (example: The same client depends
25//   separately on two exoplayer modules).
26
27package {
28    default_applicable_licenses: ["external_exoplayer_license"],
29}
30
31// Added automatically by a large-scale-change
32// See: http://go/android-license-faq
33license {
34    name: "external_exoplayer_license",
35    visibility: [":__subpackages__"],
36    license_kinds: [
37        "SPDX-license-identifier-Apache-2.0",
38    ],
39    license_text: [
40        "LICENSE",
41    ],
42}
43
44android_library {
45    name: "exoplayer-mediaprovider-ui",
46    srcs: [
47        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/ui/src/main/java/**/*.java",
48    ],
49    resource_dirs: [
50        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/ui/src/main/res",
51    ],
52    sdk_version: "31", // Needs to be a prebuilt, so not "current".
53    min_sdk_version: "21", // match with tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/constants.gradle
54    libs: ["androidx.annotation_annotation"],
55    static_libs: [
56        "androidx.core_core",
57        "androidx.media_media",
58        "androidx.recyclerview_recyclerview",
59        "error_prone_annotations",
60        "exoplayer-annotation_stubs",
61        "exoplayer-mediaprovider-core",
62        "guava",
63        "jsr305",
64    ],
65    apex_available: [
66        "com.android.mediaprovider",
67        "//apex_available:platform",
68    ],
69
70    manifest: "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/ui/src/main/AndroidManifest.xml",
71    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
72    visibility: ["//packages/providers/MediaProvider:__subpackages__"],
73}
74
75// Needed because exoplayer-mediaprovider-ui depends on a resource from core, using the core package
76// name, meaning the resources from this target need to use the package name from core's manifest,
77// while exoplayer-mediaprovider-ui resources need to keep ui's package name.
78android_library {
79    name: "exoplayer-mediaprovider-core",
80    srcs: [
81        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/common/src/main/java/**/*.java",
82        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/java/**/*/*.java",
83        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/database/src/main/java/**/*.java",
84        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/datasource/src/main/java/**/*.java",
85        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/decoder/src/main/java/**/*.java",
86        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/extractor/src/main/java/**/*.java",
87    ],
88    resource_dirs: [
89        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/res",
90    ],
91    sdk_version: "31", // Needs to be a prebuilt, so not "current".
92    min_sdk_version: "21", // match with tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/constants.gradle
93    libs: ["androidx.annotation_annotation"],
94    static_libs: [
95        "androidx.core_core",
96        "androidx.media_media",
97        "androidx.recyclerview_recyclerview",
98        "error_prone_annotations",
99        "exoplayer-annotation_stubs",
100        "guava",
101        "jsr305",
102    ],
103    apex_available: [
104        "com.android.mediaprovider",
105        "//apex_available:platform",
106    ],
107    manifest: "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/AndroidManifest.xml",
108    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
109    visibility: ["//visibility:private"],
110}
111
112// Used by MediaMuxerTest to test features not supported by MediaExtractor.
113android_library {
114    name: "exoplayer-mediamuxer_tests",
115    srcs: [
116        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/common/src/main/java/**/*.java",
117        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/decoder/src/main/java/**/*.java",
118        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/core/src/main/java/**/*.java",
119        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/database/src/main/java/**/*.java",
120        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/datasource/src/main/java/**/*.java",
121        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/extractor/src/main/java/**/*.java",
122    ],
123    manifest: "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/core/src/main/AndroidManifest.xml",
124    resource_dirs: [
125        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/core/src/main/res",
126    ],
127    sdk_version: "31", // Needs to be a prebuilt, so not "current".
128    min_sdk_version: "21", // match with tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/constants.gradle
129    libs: ["androidx.annotation_annotation"],
130    static_libs: [
131        "androidx.core_core",
132        "error_prone_annotations",
133        "exoplayer-annotation_stubs",
134        "guava",
135        "jsr305",
136    ],
137    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
138    visibility: ["//cts/tests/tests/media/muxer:__subpackages__"],
139}
140
141// Used by MediaParser to implement media container files parsing.
142java_library {
143    name: "exoplayer-media_apex",
144    srcs: [
145        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/decoder/src/main/java/**/*.java",
146        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/extractor/src/main/java/**/*.java",
147        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/common/src/main/java/**/*.java",
148    ],
149    sdk_version: "31", // Needs to be a prebuilt, so not "current".
150    apex_available: [
151        "com.android.media",
152        "//apex_available:platform",
153    ],
154    min_sdk_version: "21", // match with tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/constants.gradle
155    libs: ["androidx.annotation_annotation"],
156    static_libs: [
157        "exoplayer-annotation_stubs",
158        "error_prone_annotations",
159        "guava",
160        "jsr305",
161    ],
162    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
163    visibility: [
164        "//frameworks/base:__subpackages__",
165        "//packages/modules/Media/apex/framework",
166    ],
167}
168
169android_library {
170    name: "exoplayer-vendor_cwral",
171    srcs: [
172        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/*.java",
173    ],
174    sdk_version: "31", // Needs to be a prebuilt, so not "current".
175    min_sdk_version: "21", // match with tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/constants.gradle
176    libs: ["androidx.annotation_annotation"],
177    static_libs: [
178        "androidx.core_core",
179        "error_prone_annotations",
180        "exoplayer-annotation_stubs",
181        "exoplayer-vendor_cwral-core",
182        "guava",
183        "jsr305",
184    ],
185    apex_available: [
186        "//apex_available:platform",
187    ],
188    manifest: "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/AndroidManifest.xml",
189    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
190    visibility: ["//vendor:__subpackages__"],
191}
192
193android_library {
194    name: "exoplayer-vendor_cwral-core",
195    srcs: [
196        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/common/src/main/java/**/*.java",
197        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/java/**/*/*.java",
198        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/database/src/main/java/**/*.java",
199        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/datasource/src/main/java/**/*.java",
200        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/decoder/src/main/java/**/*.java",
201        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/extractor/src/main/java/**/*.java",
202    ],
203    resource_dirs: [
204        "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/res",
205    ],
206    sdk_version: "31", // Needs to be a prebuilt, so not "current".
207    min_sdk_version: "21", // match with tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/constants.gradle
208    libs: ["androidx.annotation_annotation"],
209    static_libs: [
210        "androidx.core_core",
211        "error_prone_annotations",
212        "exoplayer-annotation_stubs",
213        "guava",
214        "jsr305",
215    ],
216    apex_available: [
217        "//apex_available:platform",
218    ],
219    manifest: "tree_8e57d3715f9092d5ec54ebe2e538f34bfcc34479/library/core/src/main/AndroidManifest.xml",
220    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
221    visibility: ["//visibility:private"],
222}
223
224// Exposes util classes for testing MediaParser.
225android_library {
226    name: "exoplayer-cts_media-test_utils",
227    manifest: "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/extractor/src/test/AndroidManifest.xml",
228    srcs: [
229        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/datasource/src/main/java/**/*.java",
230        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/database/src/main/java/**/*.java",
231        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/Dumper.java",
232        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorInput.java",
233        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorOutput.java",
234        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java",
235        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestUtil.java",
236        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestUtil.java",
237        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/DumpableFormat.java",
238        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testutils/src/main/java/com/google/android/exoplayer2/testutil/NoUidTimeline.java",
239        "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/core/src/main/java/com/google/android/exoplayer2/source/ForwardingTimeline.java",
240    ],
241    sdk_version: "31",
242    min_sdk_version: "21", // match with tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/constants.gradle
243    libs: ["androidx.annotation_annotation"],
244    static_libs: [
245        "exoplayer-annotation_stubs",
246        "exoplayer-media_apex",
247        "truth",
248        "junit",
249        "androidx.test.core",
250    ],
251    jarjar_rules: "annotation-stripping-jarjar-rules.txt",
252    visibility: ["//cts/tests/tests/mediaparser:__subpackages__"],
253}
254
255// Exposes the assets for testing MediaParser.
256android_library {
257    name: "exoplayer-cts_media-test_assets",
258    manifest: "tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/library/extractor/src/main/AndroidManifest.xml",
259    srcs: [],
260    min_sdk_version: "21", // match with tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/constants.gradle
261    visibility: ["//cts/tests/tests/mediaparser:__subpackages__"],
262    asset_dirs: ["tree_15dc86382f17a24a3e881e52e31a810c1ea44b49/testdata/src/test/assets/"],
263    // Do not compress media files.
264    aaptflags: [
265        "-0 .ac3",
266        "-0 .ac4",
267        "-0 .adts",
268        "-0 .amr",
269        "-0 .eac3",
270        "-0 .flac",
271        "-0 .flv",
272        "-0 .id3",
273        "-0 .mkv",
274        "-0 .mp3",
275        "-0 .mp4",
276        "-0 .mpg",
277        "-0 .ogg",
278        "-0 .opus",
279        "-0 .ps",
280        "-0 .rawcc",
281        "-0 .ts",
282        "-0 .wav",
283        "-0 .webm",
284    ],
285}
286
287// Compile dummy implementations of annotations used by exoplayer but not
288// present in the Android tree.
289java_library {
290    name: "exoplayer-annotation_stubs",
291    host_supported: true,
292    sdk_version: "core_current",
293    apex_available: [
294        "//apex_available:anyapex",
295        "//apex_available:platform",
296    ],
297    min_sdk_version: "21",
298    srcs: ["annotation-stubs/src/**/*.java"],
299    static_libs: ["jsr305"],
300    visibility: ["//visibility:private"],
301}
302