71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
# ExoPlayer Cronet extension #
|
|
|
|
The Cronet extension is an [HttpDataSource][] implementation using [Cronet][].
|
|
|
|
[HttpDataSource]: https://google.github.io/ExoPlayer/doc/reference/com/google/android/exoplayer2/upstream/HttpDataSource.html
|
|
[Cronet]: https://chromium.googlesource.com/chromium/src/+/master/components/cronet?autodive=0%2F%2F
|
|
|
|
## Build instructions ##
|
|
|
|
To use this extension you need to clone the ExoPlayer repository and depend on
|
|
its modules locally. Instructions for doing this can be found in ExoPlayer's
|
|
[top level README][]. In addition, it's necessary to get the Cronet libraries
|
|
and enable the extension:
|
|
|
|
1. Find the latest Cronet release [here][] and navigate to its `Release/cronet`
|
|
directory
|
|
1. Download `cronet_api.jar`, `cronet_impl_common_java.jar`,
|
|
`cronet_impl_native_java.jar` and the `libs` directory
|
|
1. Copy the three jar files into the `libs` directory of this extension
|
|
1. Copy the content of the downloaded `libs` directory into the `jniLibs`
|
|
directory of this extension
|
|
1. In your `settings.gradle` file, add
|
|
`gradle.ext.exoplayerIncludeCronetExtension = true` before the line that
|
|
applies `core_settings.gradle`.
|
|
1. In all `build.gradle` files where this extension is linked as a dependency,
|
|
add
|
|
```
|
|
android {
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
}
|
|
```
|
|
to enable Java 8 features required by the Cronet library.
|
|
|
|
[top level README]: https://github.com/google/ExoPlayer/blob/release-v2/README.md
|
|
[here]: https://console.cloud.google.com/storage/browser/chromium-cronet/android
|
|
|
|
## Using the extension ##
|
|
|
|
ExoPlayer requests data through `DataSource` instances. These instances are
|
|
either instantiated and injected from application code, or obtained from
|
|
instances of `DataSource.Factory` that are instantiated and injected from
|
|
application code.
|
|
|
|
If your application only needs to play http(s) content, using the Cronet
|
|
extension is as simple as updating any `DataSource`s and `DataSource.Factory`
|
|
instantiations in your application code to use `CronetDataSource` and
|
|
`CronetDataSourceFactory` respectively. If your application also needs to play
|
|
non-http(s) content such as local files, use
|
|
```
|
|
new DefaultDataSource(
|
|
...
|
|
new CronetDataSource(...) /* baseDataSource argument */);
|
|
```
|
|
and
|
|
```
|
|
new DefaultDataSourceFactory(
|
|
...
|
|
new CronetDataSourceFactory(...) /* baseDataSourceFactory argument */);
|
|
```
|
|
respectively.
|
|
|
|
## Links ##
|
|
|
|
* [Javadoc][]: Classes matching `com.google.android.exoplayer2.ext.cronet.*`
|
|
belong to this module.
|
|
|
|
[Javadoc]: https://google.github.io/ExoPlayer/doc/reference/index.html
|