From 8165daef4be808fd35ef3ef8539209d01375298f Mon Sep 17 00:00:00 2001
From: volodymyr-bondarenko85
<131799099+volodymyr-bondarenko85@users.noreply.github.com>
Date: Mon, 23 Dec 2024 14:33:08 +0200
Subject: [PATCH] KUX-1761: Upgrade exoplayer to Media 3 (#161)
* KUX-1761: Upgrade exoplayer to Media 3
* ASTRO-1204: Astro -support Android 14 in player playkit SDK
* ASTRO-1204: Astro -support Android 14 in player playkit SDK
* ASTRO-1204: Astro -support Android 14 in player playkit SDK
* Custom branch release publish updated
---
.github/publish.sh | 2 +-
.github/workflows/build.yml | 4 +-
.github/workflows/publish.yml | 7 +++
build.gradle | 4 +-
gradle/wrapper/gradle-wrapper.properties | 2 +-
imaplugin/build.gradle | 27 ++++++----
imaplugin/gradle-mvn-local.gradle | 4 +-
imaplugin/gradle-mvn-push.gradle | 6 +--
imaplugin/src/main/AndroidManifest.xml | 3 +-
.../ima/ExoAdPlaybackAnalyticsListener.kt | 13 ++---
.../plugins/ima/ExoPlayerWithAdPlayback.java | 49 ++++++++++---------
.../playkit/plugins/ima/IMAPlugin.java | 2 +
.../playkit/plugins/imadai/IMADAIPlugin.java | 4 +-
jitpack.yml | 2 +-
14 files changed, 75 insertions(+), 54 deletions(-)
diff --git a/.github/publish.sh b/.github/publish.sh
index 07160a30..d88f3afa 100644
--- a/.github/publish.sh
+++ b/.github/publish.sh
@@ -42,7 +42,7 @@ set_version() {
fi
if [ "$RELEASE_TYPE" == "Full" ]; then
echo "RELEASE_TYPE = '$RELEASE_TYPE'"
- perl -pi -e "s/:playkit-android:dev-SNAPSHOT/.playkit:playkit:$NEW_VERSION/" $BUILD_GRADLE
+ perl -pi -e "s/:playkit-android:.*?-SNAPSHOT/.playkit:playkit:$NEW_VERSION/" $BUILD_GRADLE
fi
}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 07735d99..cdf69fcc 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -20,10 +20,10 @@ jobs:
- name: Checkout repo and clone to CI workspace
uses: actions/checkout@v3
- - name: Setup JDK 11
+ - name: Setup JDK 17
uses: actions/setup-java@v3
with:
- java-version: '11'
+ java-version: '17'
distribution: 'adopt'
cache: 'gradle'
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index c74a1b88..ca62ce47 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -49,6 +49,13 @@ jobs:
run: |
mkdir $PWD/.kltrenv && echo "${{ secrets.SIGNING_KEY }}" > $PWD/.kltrenv/secring.gpg.b64
base64 -d $PWD/.kltrenv/secring.gpg.b64 > $PWD/.kltrenv/secring.gpg
+
+ - name: Setup JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'adopt'
+ cache: 'gradle'
- name: Run publish Script
run: |
diff --git a/build.gradle b/build.gradle
index 5d3d291d..81fe88f2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,14 +7,14 @@ ext["signingKeyId"] = System.getenv('SIGNING_KEYID')
ext["signingPassword"] = System.getenv('SIGNING_PASSWORD')
buildscript {
- ext.kotlin_version = '1.7.10'
+ ext.kotlin_version = '1.8.0'
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.1'
+ classpath 'com.android.tools.build:gradle:8.3.2'
classpath 'io.github.gradle-nexus:publish-plugin:1.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index e366df87..8838dc9a 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
diff --git a/imaplugin/build.gradle b/imaplugin/build.gradle
index d1acb28f..6caac8b5 100644
--- a/imaplugin/build.gradle
+++ b/imaplugin/build.gradle
@@ -3,20 +3,29 @@ apply plugin: 'kotlin-android'
apply from: 'version.gradle'
android {
- compileSdkVersion 33
+ namespace 'com.kaltura.playkit.plugin.ima'
+ compileSdk 34
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
}
defaultConfig {
- minSdkVersion 16
- targetSdkVersion 33
+ minSdkVersion 21
+ targetSdkVersion 34
versionName libVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String","VERSION_NAME","\"${libVersion}\"")
}
-
+ buildFeatures {
+ buildConfig true
+ }
+ publishing {
+ publishing {
+ singleVariant('release') {
+ }
+ }
+ }
buildTypes {
release {
minifyEnabled false
@@ -25,14 +34,14 @@ android {
}
kotlinOptions {
- jvmTarget = '1.8'
+ jvmTarget = '17'
}
}
dependencies {
// TODO: when playkit without plugins is released, replace this.
- implementation 'com.kaltura:playkit-android:dev-SNAPSHOT'
+ implementation 'com.kaltura:playkit-android:KUX-1761-SNAPSHOT'
//implementation project(":playkit")
// Kotlin Config
@@ -40,7 +49,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
//Ads library.
- api 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0'
+ api 'com.google.ads.interactivemedia.v3:interactivemedia:3.35.1'
testImplementation 'junit:junit:4.13.2'
implementation 'androidx.annotation:annotation:1.3.0'
diff --git a/imaplugin/gradle-mvn-local.gradle b/imaplugin/gradle-mvn-local.gradle
index 6d0d890c..389f44fd 100644
--- a/imaplugin/gradle-mvn-local.gradle
+++ b/imaplugin/gradle-mvn-local.gradle
@@ -1,7 +1,7 @@
apply plugin: 'maven-publish'
task androidSourcesJar(type: Jar) {
- classifier 'sources'
+ archiveClassifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
@@ -9,7 +9,7 @@ project.afterEvaluate {
publishing {
publications {
mavenJava(MavenPublication) {
- from components.release
+ from components.findByName('release')
}
}
repositories {
diff --git a/imaplugin/gradle-mvn-push.gradle b/imaplugin/gradle-mvn-push.gradle
index e26cac07..f2c6402b 100644
--- a/imaplugin/gradle-mvn-push.gradle
+++ b/imaplugin/gradle-mvn-push.gradle
@@ -27,7 +27,7 @@ afterEvaluate { project ->
publishing {
publications {
mavenJava(MavenPublication) {
- from components.release
+ from components.findByName('release')
groupId = GROUP
artifactId = POM_ARTIFACT_ID
@@ -97,12 +97,12 @@ afterEvaluate { project ->
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
- classifier 'javadoc'
+ archiveClassifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
- classifier 'sources'
+ archiveClassifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
diff --git a/imaplugin/src/main/AndroidManifest.xml b/imaplugin/src/main/AndroidManifest.xml
index 1b1305a5..94cbbcfc 100644
--- a/imaplugin/src/main/AndroidManifest.xml
+++ b/imaplugin/src/main/AndroidManifest.xml
@@ -1,2 +1 @@
-
+
diff --git a/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoAdPlaybackAnalyticsListener.kt b/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoAdPlaybackAnalyticsListener.kt
index 68214ee6..80ca66c5 100644
--- a/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoAdPlaybackAnalyticsListener.kt
+++ b/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoAdPlaybackAnalyticsListener.kt
@@ -1,13 +1,14 @@
package com.kaltura.playkit.plugins.ima
import androidx.annotation.Nullable
-import com.kaltura.android.exoplayer2.Format
-import com.kaltura.android.exoplayer2.analytics.AnalyticsListener
-import com.kaltura.android.exoplayer2.decoder.DecoderReuseEvaluation
-import com.kaltura.android.exoplayer2.trackselection.DefaultTrackSelector
-import com.kaltura.android.exoplayer2.util.EventLogger
+import com.kaltura.androidx.media3.common.Format
+import com.kaltura.androidx.media3.common.util.UnstableApi
+import com.kaltura.androidx.media3.exoplayer.analytics.AnalyticsListener
+import com.kaltura.androidx.media3.exoplayer.DecoderReuseEvaluation
+import com.kaltura.androidx.media3.exoplayer.trackselection.DefaultTrackSelector
+import com.kaltura.androidx.media3.exoplayer.util.EventLogger
-class ExoAdPlaybackAnalyticsListener: EventLogger() {
+@UnstableApi class ExoAdPlaybackAnalyticsListener: EventLogger() {
interface VideoFormatChangedListener {
fun videoFormatChanged(format: Format)
diff --git a/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoPlayerWithAdPlayback.java b/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoPlayerWithAdPlayback.java
index 86ad11b5..b15830a3 100644
--- a/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoPlayerWithAdPlayback.java
+++ b/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/ExoPlayerWithAdPlayback.java
@@ -17,24 +17,25 @@
import com.google.ads.interactivemedia.v3.api.player.ContentProgressProvider;
import com.google.ads.interactivemedia.v3.api.player.VideoAdPlayer;
import com.google.ads.interactivemedia.v3.api.player.VideoProgressUpdate;
-import com.kaltura.android.exoplayer2.C;
-import com.kaltura.android.exoplayer2.DefaultRenderersFactory;
-import com.kaltura.android.exoplayer2.ExoPlayer;
-import com.kaltura.android.exoplayer2.Format;
-import com.kaltura.android.exoplayer2.MediaItem;
-import com.kaltura.android.exoplayer2.PlaybackException;
-import com.kaltura.android.exoplayer2.PlaybackParameters;
-import com.kaltura.android.exoplayer2.Player;
-import com.kaltura.android.exoplayer2.Timeline;
-import com.kaltura.android.exoplayer2.trackselection.AdaptiveTrackSelection;
-import com.kaltura.android.exoplayer2.trackselection.DefaultTrackSelector;
-import com.kaltura.android.exoplayer2.ui.StyledPlayerView;
-import com.kaltura.android.exoplayer2.upstream.DataSource;
-import com.kaltura.android.exoplayer2.upstream.DefaultDataSource;
-import com.kaltura.android.exoplayer2.upstream.DefaultHttpDataSource;
-import com.kaltura.android.exoplayer2.upstream.HttpDataSource;
-import com.kaltura.android.exoplayer2.util.Log;
-import com.kaltura.android.exoplayer2.util.Util;
+import com.kaltura.androidx.media3.common.C;
+import com.kaltura.androidx.media3.common.util.UnstableApi;
+import com.kaltura.androidx.media3.exoplayer.DefaultRenderersFactory;
+import com.kaltura.androidx.media3.exoplayer.ExoPlayer;
+import com.kaltura.androidx.media3.common.Format;
+import com.kaltura.androidx.media3.common.MediaItem;
+import com.kaltura.androidx.media3.common.PlaybackException;
+import com.kaltura.androidx.media3.common.PlaybackParameters;
+import com.kaltura.androidx.media3.common.Player;
+import com.kaltura.androidx.media3.common.Timeline;
+import com.kaltura.androidx.media3.exoplayer.trackselection.AdaptiveTrackSelection;
+import com.kaltura.androidx.media3.exoplayer.trackselection.DefaultTrackSelector;
+import com.kaltura.androidx.media3.ui.PlayerView;
+import com.kaltura.androidx.media3.datasource.DataSource;
+import com.kaltura.androidx.media3.datasource.DefaultDataSource;
+import com.kaltura.androidx.media3.datasource.DefaultHttpDataSource;
+import com.kaltura.androidx.media3.datasource.HttpDataSource;
+import com.kaltura.androidx.media3.common.util.Log;
+import com.kaltura.androidx.media3.common.util.Util;
import com.kaltura.playkit.PKLog;
import com.kaltura.playkit.PKMediaFormat;
import com.kaltura.playkit.PlayerState;
@@ -47,9 +48,9 @@
import java.util.Collections;
import java.util.List;
-import static com.kaltura.android.exoplayer2.util.Log.LOG_LEVEL_OFF;
+import static com.kaltura.androidx.media3.common.util.Log.LOG_LEVEL_OFF;
-/**
+@UnstableApi /**
* Video adPlayer that can play content video and ads.
*/
public class ExoPlayerWithAdPlayback extends RelativeLayout implements Player.Listener, ExoAdPlaybackAnalyticsListener.VideoFormatChangedListener {
@@ -77,7 +78,7 @@ public enum IMAAdState {
private boolean debugEnabled;
// The wrapped video adPlayerView.
- private StyledPlayerView adVideoPlayerView;
+ private PlayerView adVideoPlayerView;
// The SDK will render ad playback UI elements into this ViewGroup.
private ViewGroup adUiContainer;
@@ -140,8 +141,8 @@ public ExoPlayerWithAdPlayback(Context context, int adLoadTimeout, boolean debug
init();
}
- private StyledPlayerView createAdPlayerView() {
- adVideoPlayerView = new StyledPlayerView(getContext());
+ private PlayerView createAdPlayerView() {
+ adVideoPlayerView = new PlayerView(getContext());
adVideoPlayerView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
int id = 123456789;
adVideoPlayerView.setId(id);
@@ -153,7 +154,7 @@ public ViewGroup getAdUiContainer() {
return adUiContainer;
}
- public StyledPlayerView getAdPlayerView() {
+ public PlayerView getAdPlayerView() {
return adVideoPlayerView;
}
diff --git a/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/IMAPlugin.java b/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/IMAPlugin.java
index fb0fa4fc..708507c1 100644
--- a/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/IMAPlugin.java
+++ b/imaplugin/src/main/java/com/kaltura/playkit/plugins/ima/IMAPlugin.java
@@ -37,6 +37,7 @@
import com.google.ads.interactivemedia.v3.api.player.VideoAdPlayer;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
+import com.kaltura.androidx.media3.common.util.UnstableApi;
import com.kaltura.playkit.MessageBus;
import com.kaltura.playkit.PKError;
import com.kaltura.playkit.PKErrorCategory;
@@ -77,6 +78,7 @@
import java.util.List;
import java.util.Map;
+@UnstableApi
/**
* Created by gilad.nadav on 17/11/2016.
*/
diff --git a/imaplugin/src/main/java/com/kaltura/playkit/plugins/imadai/IMADAIPlugin.java b/imaplugin/src/main/java/com/kaltura/playkit/plugins/imadai/IMADAIPlugin.java
index e35469d0..8c8f91ea 100644
--- a/imaplugin/src/main/java/com/kaltura/playkit/plugins/imadai/IMADAIPlugin.java
+++ b/imaplugin/src/main/java/com/kaltura/playkit/plugins/imadai/IMADAIPlugin.java
@@ -21,7 +21,8 @@
import com.google.ads.interactivemedia.v3.api.player.VideoStreamPlayer;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
-import com.kaltura.android.exoplayer2.C;
+import com.kaltura.androidx.media3.common.C;
+import com.kaltura.androidx.media3.common.util.UnstableApi;
import com.kaltura.playkit.MessageBus;
import com.kaltura.playkit.PKDrmParams;
import com.kaltura.playkit.PKError;
@@ -66,6 +67,7 @@
import java.util.ListIterator;
import java.util.Map;
+@UnstableApi
public class IMADAIPlugin extends PKPlugin implements com.google.ads.interactivemedia.v3.api.AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsProvider {
private static final PKLog log = PKLog.get("IMADAIPlugin");
private static final int KB_MULTIPLIER = 1024;
diff --git a/jitpack.yml b/jitpack.yml
index 4f7b3d45..e86ad330 100644
--- a/jitpack.yml
+++ b/jitpack.yml
@@ -1,5 +1,5 @@
jdk:
- - openjdk11
+ - openjdk17
before_install:
- curl https://kaltura.github.io/fe-tools/android/license.sh | sh