feat(android): allow to disable selected functionalities (#3681)
* feat(android): add possibility do disable some of functionalities * create dump classes * remove dump files when functionalities are enabled * add docs * enable all functionalities in example * throw error when trying to use disabled functionality * update docs
This commit is contained in:
parent
2285eba8f0
commit
64e3191f73
@ -36,17 +36,30 @@ def supportsNamespace() {
|
|||||||
return major >= 8
|
return major >= 8
|
||||||
}
|
}
|
||||||
|
|
||||||
def useExoplayerIMA = safeExtGet("RNVUseExoplayerIMA")?.toBoolean() ?: false
|
def ExoplayerDependenciesList = [
|
||||||
|
"useExoplayerIMA",
|
||||||
|
"useExoplayerSmoothStreaming",
|
||||||
|
"useExoplayerDash",
|
||||||
|
"useExoplayerHls",
|
||||||
|
"useExoplayerRtsp",
|
||||||
|
]
|
||||||
|
|
||||||
println "useExoplayerIMA:" + useExoplayerIMA
|
def ExoplayerDependencies = ExoplayerDependenciesList.collectEntries { property ->
|
||||||
|
[(property): safeExtGet(property)?.toBoolean() ?: false]
|
||||||
|
}
|
||||||
|
|
||||||
|
ExoplayerDependenciesList.each { propertyName ->
|
||||||
|
def propertyValue = ExoplayerDependencies[propertyName]
|
||||||
|
println "$propertyName: $propertyValue"
|
||||||
|
}
|
||||||
|
|
||||||
// This string is used to define build path.
|
// This string is used to define build path.
|
||||||
// As react native build output directory is react-native path of the module.
|
// As react native build output directory is react-native path of the module.
|
||||||
// We need to force a new path on each configuration change.
|
// We need to force a new path on each configuration change.
|
||||||
// If you add a new build parameter, please add the new value in this string
|
// If you add a new build parameter, please add the new value in this string
|
||||||
def configStringPath = (
|
def configStringPath = ExoplayerDependencies.collect { property, value ->
|
||||||
'useExoplayerIMA' + useExoplayerIMA \
|
property + value
|
||||||
).md5()
|
}.join('').md5()
|
||||||
|
|
||||||
if (isNewArchitectureEnabled()) {
|
if (isNewArchitectureEnabled()) {
|
||||||
apply plugin: "com.facebook.react"
|
apply plugin: "com.facebook.react"
|
||||||
@ -83,7 +96,13 @@ android {
|
|||||||
targetSdkVersion safeExtGet('targetSdkVersion')
|
targetSdkVersion safeExtGet('targetSdkVersion')
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
|
|
||||||
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
||||||
|
buildConfigField "boolean", "USE_EXOPLAYER_IMA", ExoplayerDependencies["useExoplayerIMA"].toString()
|
||||||
|
buildConfigField "boolean", "USE_EXOPLAYER_SMOOTH_STREAMING", ExoplayerDependencies["useExoplayerSmoothStreaming"].toString()
|
||||||
|
buildConfigField "boolean", "USE_EXOPLAYER_DASH", ExoplayerDependencies["useExoplayerDash"].toString()
|
||||||
|
buildConfigField "boolean", "USE_EXOPLAYER_HLS", ExoplayerDependencies["useExoplayerHls"].toString()
|
||||||
|
buildConfigField "boolean", "USE_EXOPLAYER_RTSP", ExoplayerDependencies["useExoplayerRtsp"].toString()
|
||||||
|
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters(*reactNativeArchitectures())
|
abiFilters(*reactNativeArchitectures())
|
||||||
@ -103,10 +122,26 @@ android {
|
|||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
java {
|
java {
|
||||||
if (useExoplayerIMA) {
|
if (ExoplayerDependencies["useExoplayerIMA"]) {
|
||||||
exclude 'com/google/ads/interactivemedia/v3/api'
|
exclude 'com/google/ads/interactivemedia/v3/api'
|
||||||
exclude 'androidx/media3/exoplayer/ima'
|
exclude 'androidx/media3/exoplayer/ima'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerSmoothStreaming"]) {
|
||||||
|
exclude 'androidx/media3/exoplayer/smoothstreaming'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerDash"]) {
|
||||||
|
exclude 'androidx/media3/exoplayer/dash'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerHls"]) {
|
||||||
|
exclude 'androidx/media3/exoplayer/hls'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerRtsp"]) {
|
||||||
|
exclude 'androidx/media3/exoplayer/rtsp'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,16 +193,28 @@ dependencies {
|
|||||||
// For media playback using ExoPlayer
|
// For media playback using ExoPlayer
|
||||||
implementation "androidx.media3:media3-exoplayer:$media3_version"
|
implementation "androidx.media3:media3-exoplayer:$media3_version"
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerSmoothStreaming"]) {
|
||||||
// For Smooth Streaming playback support with ExoPlayer
|
// For Smooth Streaming playback support with ExoPlayer
|
||||||
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
|
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerDash"]) {
|
||||||
// For DASH playback support with ExoPlayer
|
// For DASH playback support with ExoPlayer
|
||||||
implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
|
implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ExoplayerDependencies["useExoplayerHls"]) {
|
||||||
// For HLS playback support with ExoPlayer
|
// For HLS playback support with ExoPlayer
|
||||||
implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
|
implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
// For RTSP playback support with ExoPlayer
|
||||||
|
if (ExoplayerDependencies["useExoplayerRtsp"]) {
|
||||||
implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version"
|
implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version"
|
||||||
|
}
|
||||||
|
|
||||||
// For ad insertion using the Interactive Media Ads SDK with ExoPlayer
|
// For ad insertion using the Interactive Media Ads SDK with ExoPlayer
|
||||||
if (useExoplayerIMA) {
|
if (ExoplayerDependencies["useExoplayerIMA"]) {
|
||||||
implementation "androidx.media3:media3-exoplayer-ima:$media3_version"
|
implementation "androidx.media3:media3-exoplayer-ima:$media3_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,10 @@ RNVideo_compileSdkVersion=31
|
|||||||
RNVideo_ndkversion=21.4.7075529
|
RNVideo_ndkversion=21.4.7075529
|
||||||
RNVideo_buildToolsVersion=30.0.2
|
RNVideo_buildToolsVersion=30.0.2
|
||||||
RNVideo_media3Version=1.1.1
|
RNVideo_media3Version=1.1.1
|
||||||
RNVideo_RNVUseExoplayerIMA=false
|
RNVideo_useExoplayerIMA=false
|
||||||
|
RNVideo_useExoplayerRtsp=false
|
||||||
|
RNVideo_useExoplayerSmoothStreaming=true
|
||||||
|
RNVideo_useExoplayerDash=true
|
||||||
|
RNVideo_useExoplayerHls=true
|
||||||
RNVideo_androidxCoreVersion=1.9.0
|
RNVideo_androidxCoreVersion=1.9.0
|
||||||
RNVideo_androidxActivityVersion=1.7.0
|
RNVideo_androidxActivityVersion=1.7.0
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package androidx.media3.exoplayer.dash;
|
||||||
|
|
||||||
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.datasource.DataSource;
|
||||||
|
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
|
||||||
|
import androidx.media3.exoplayer.source.MediaSource;
|
||||||
|
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
|
||||||
|
|
||||||
|
public class DashMediaSource {
|
||||||
|
public static class Factory implements MediaSource.Factory {
|
||||||
|
|
||||||
|
public Factory(DefaultDashChunkSource.Factory factory, DataSource.Factory factory1) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setDrmSessionManagerProvider(DrmSessionManagerProvider drmSessionManagerProvider) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSupportedTypes() {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource createMediaSource(MediaItem mediaItem) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
package androidx.media3.exoplayer.dash;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
|
import androidx.media3.datasource.DataSource;
|
||||||
|
import androidx.media3.exoplayer.dash.manifest.DashManifest;
|
||||||
|
|
||||||
|
public class DashUtil {
|
||||||
|
public static DashManifest loadManifest(DataSource ds, Uri uri) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package androidx.media3.exoplayer.dash;
|
||||||
|
|
||||||
|
import androidx.media3.datasource.DataSource;
|
||||||
|
|
||||||
|
public class DefaultDashChunkSource {
|
||||||
|
public static final class Factory {
|
||||||
|
public Factory(DataSource.Factory mediaDataSourceFactory) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package androidx.media3.exoplayer.dash.manifest;
|
||||||
|
|
||||||
|
import androidx.collection.CircularArray;
|
||||||
|
import androidx.media3.common.C;
|
||||||
|
|
||||||
|
public class AdaptationSet {
|
||||||
|
public int type = 0;
|
||||||
|
public CircularArray<Representation> representations;
|
||||||
|
|
||||||
|
public AdaptationSet() {
|
||||||
|
representations = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package androidx.media3.exoplayer.dash.manifest;
|
||||||
|
|
||||||
|
public class DashManifest {
|
||||||
|
public DashManifest() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPeriodCount() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Period getPeriod(int index) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package androidx.media3.exoplayer.dash.manifest;
|
||||||
|
|
||||||
|
import androidx.collection.CircularArray;
|
||||||
|
|
||||||
|
public class Period {
|
||||||
|
public CircularArray<AdaptationSet> adaptationSets;
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package androidx.media3.exoplayer.dash.manifest;
|
||||||
|
|
||||||
|
import androidx.media3.common.Format;
|
||||||
|
|
||||||
|
public class Representation {
|
||||||
|
public Format format;
|
||||||
|
public long presentationTimeOffsetUs;
|
||||||
|
|
||||||
|
public Representation() {
|
||||||
|
format = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package androidx.media3.exoplayer.hls;
|
||||||
|
|
||||||
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.datasource.DataSource;
|
||||||
|
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
|
||||||
|
import androidx.media3.exoplayer.source.MediaSource;
|
||||||
|
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
|
||||||
|
|
||||||
|
public class HlsMediaSource {
|
||||||
|
public static class Factory implements MediaSource.Factory {
|
||||||
|
public Factory(DataSource.Factory mediaDataSourceFactory) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setDrmSessionManagerProvider(DrmSessionManagerProvider drmSessionManagerProvider) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSupportedTypes() {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource createMediaSource(MediaItem mediaItem) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package androidx.media3.exoplayer.rtsp;
|
||||||
|
|
||||||
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
|
||||||
|
import androidx.media3.exoplayer.source.MediaSource;
|
||||||
|
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
|
||||||
|
|
||||||
|
public class RtspMediaSource {
|
||||||
|
public RtspMediaSource() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Factory implements MediaSource.Factory {
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setDrmSessionManagerProvider(DrmSessionManagerProvider drmSessionManagerProvider) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSupportedTypes() {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource createMediaSource(MediaItem mediaItem) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package androidx.media3.exoplayer.smoothstreaming;
|
||||||
|
|
||||||
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.datasource.DataSource;
|
||||||
|
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
|
||||||
|
import androidx.media3.exoplayer.source.MediaSource;
|
||||||
|
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
|
||||||
|
|
||||||
|
public class DefaultSsChunkSource {
|
||||||
|
public static class Factory implements MediaSource.Factory {
|
||||||
|
public Factory(DataSource.Factory mediaDataSourceFactory) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setDrmSessionManagerProvider(DrmSessionManagerProvider drmSessionManagerProvider) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSupportedTypes() {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource createMediaSource(MediaItem mediaItem) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package androidx.media3.exoplayer.smoothstreaming;
|
||||||
|
|
||||||
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.datasource.DataSource;
|
||||||
|
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
|
||||||
|
import androidx.media3.exoplayer.source.MediaSource;
|
||||||
|
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
|
||||||
|
|
||||||
|
public class SsMediaSource {
|
||||||
|
public static class Factory implements MediaSource.Factory {
|
||||||
|
public Factory(DefaultSsChunkSource.Factory factory, DataSource.Factory factory1) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setDrmSessionManagerProvider(DrmSessionManagerProvider drmSessionManagerProvider) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource.Factory setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSupportedTypes() {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaSource createMediaSource(MediaItem mediaItem) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -101,6 +101,7 @@ import com.brentvatne.common.api.Track;
|
|||||||
import com.brentvatne.common.api.VideoTrack;
|
import com.brentvatne.common.api.VideoTrack;
|
||||||
import com.brentvatne.common.react.VideoEventEmitter;
|
import com.brentvatne.common.react.VideoEventEmitter;
|
||||||
import com.brentvatne.common.toolbox.DebugLog;
|
import com.brentvatne.common.toolbox.DebugLog;
|
||||||
|
import com.brentvatne.react.BuildConfig;
|
||||||
import com.brentvatne.react.R;
|
import com.brentvatne.react.R;
|
||||||
import com.brentvatne.receiver.AudioBecomingNoisyReceiver;
|
import com.brentvatne.receiver.AudioBecomingNoisyReceiver;
|
||||||
import com.brentvatne.receiver.BecomingNoisyListener;
|
import com.brentvatne.receiver.BecomingNoisyListener;
|
||||||
@ -822,18 +823,33 @@ public class ReactExoplayerView extends FrameLayout implements
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case CONTENT_TYPE_SS:
|
case CONTENT_TYPE_SS:
|
||||||
|
if(!BuildConfig.USE_EXOPLAYER_SMOOTH_STREAMING) {
|
||||||
|
DebugLog.e("Exo Player Exception", "Smooth Streaming is not enabled!");
|
||||||
|
throw new IllegalStateException("Smooth Streaming is not enabled!");
|
||||||
|
}
|
||||||
|
|
||||||
mediaSourceFactory = new SsMediaSource.Factory(
|
mediaSourceFactory = new SsMediaSource.Factory(
|
||||||
new DefaultSsChunkSource.Factory(mediaDataSourceFactory),
|
new DefaultSsChunkSource.Factory(mediaDataSourceFactory),
|
||||||
buildDataSourceFactory(false)
|
buildDataSourceFactory(false)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case CONTENT_TYPE_DASH:
|
case CONTENT_TYPE_DASH:
|
||||||
|
if(!BuildConfig.USE_EXOPLAYER_DASH) {
|
||||||
|
DebugLog.e("Exo Player Exception", "DASH is not enabled!");
|
||||||
|
throw new IllegalStateException("DASH is not enabled!");
|
||||||
|
}
|
||||||
|
|
||||||
mediaSourceFactory = new DashMediaSource.Factory(
|
mediaSourceFactory = new DashMediaSource.Factory(
|
||||||
new DefaultDashChunkSource.Factory(mediaDataSourceFactory),
|
new DefaultDashChunkSource.Factory(mediaDataSourceFactory),
|
||||||
buildDataSourceFactory(false)
|
buildDataSourceFactory(false)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case CONTENT_TYPE_HLS:
|
case CONTENT_TYPE_HLS:
|
||||||
|
if (!BuildConfig.USE_EXOPLAYER_HLS) {
|
||||||
|
DebugLog.e("Exo Player Exception", "HLS is not enabled!");
|
||||||
|
throw new IllegalStateException("HLS is not enabled!");
|
||||||
|
}
|
||||||
|
|
||||||
mediaSourceFactory = new HlsMediaSource.Factory(
|
mediaSourceFactory = new HlsMediaSource.Factory(
|
||||||
mediaDataSourceFactory
|
mediaDataSourceFactory
|
||||||
);
|
);
|
||||||
@ -844,6 +860,11 @@ public class ReactExoplayerView extends FrameLayout implements
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case CONTENT_TYPE_RTSP:
|
case CONTENT_TYPE_RTSP:
|
||||||
|
if (!BuildConfig.USE_EXOPLAYER_RTSP) {
|
||||||
|
DebugLog.e("Exo Player Exception", "RTSP is not enabled!");
|
||||||
|
throw new IllegalStateException("RTSP is not enabled!");
|
||||||
|
}
|
||||||
|
|
||||||
mediaSourceFactory = new RtspMediaSource.Factory();
|
mediaSourceFactory = new RtspMediaSource.Factory();
|
||||||
break;
|
break;
|
||||||
default: {
|
default: {
|
||||||
|
@ -65,14 +65,28 @@ buildscript {
|
|||||||
|
|
||||||
### Enable custom feature in gradle file
|
### Enable custom feature in gradle file
|
||||||
|
|
||||||
#### Enable client side ads insertion
|
You can disable or enable the following features by setting the following variables in your `android/build.gradle` file:
|
||||||
To enable client side ads insertion CSAI with google IMA SDK, you need to enable it in your gradle file.
|
- `useExoplayerIMA` - Enable Google IMA SDK (Ads support)
|
||||||
|
- `useExoplayerRtsp` - Enable RTSP support
|
||||||
|
- `useExoplayerSmoothStreaming` - Enable SmoothStreaming support
|
||||||
|
- `useExoplayerDash` - Enable Dash support
|
||||||
|
- `useExoplayerHls` - Enable HLS support
|
||||||
|
|
||||||
|
Each of these features enabled will increase the size of your APK, so only enable the features you need.
|
||||||
|
By default enabled features are: `useExoplayerSmoothStreaming`, `useExoplayerDash`, `useExoplayerHls`
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
```gradle
|
```gradle
|
||||||
buildscript {
|
buildscript {
|
||||||
ext {
|
ext {
|
||||||
...
|
...
|
||||||
RNVUseExoplayerIMA = true
|
useExoplayerIMA = true
|
||||||
|
useExoplayerRtsp = true
|
||||||
|
useExoplayerSmoothStreaming = true
|
||||||
|
useExoplayerDash = true
|
||||||
|
useExoplayerHls = true
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,13 @@ buildscript {
|
|||||||
ndkVersion = "26.1.10909125"
|
ndkVersion = "26.1.10909125"
|
||||||
kotlinVersion = "1.9.22"
|
kotlinVersion = "1.9.22"
|
||||||
|
|
||||||
RNVUseExoplayerIMA = System.getenv("RNV_SAMPLE_ENABLE_ADS") ?: true
|
useExoplayerIMA = System.getenv("RNV_SAMPLE_ENABLE_ADS") ?: true
|
||||||
|
useExoplayerRtsp = true
|
||||||
|
|
||||||
|
// use the following to disable ExoPlayer modules - this will reduce the size of your app
|
||||||
|
// useExoplayerSmoothStreaming = false
|
||||||
|
// useExoplayerDash = false
|
||||||
|
// useExoplayerHls = false
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user