google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.74k stars 6.03k forks source link

Building a exoplayer library for Unity and having issues applying documentation #11217

Open Gurwar opened 1 year ago

Gurwar commented 1 year ago

Hello exoplayer community. I am coming from a Unity and c# background and am completely new to Android Studio. I am building a custom exoplayer library and am using available exoplayer resources to do so. Unfortunately they don't apply to building plugins for external use and a lot of the related community discussions are outdated. Here is my code for initializing the player in Java.

public static void initializePlayer(Activity unityPlayer) {
    ExoPlayer player = new ExoPlayer.Builder(unityPlayer).build();
}

Here is the Unity side.

    AndroidJNIHelper.debug = true;
    var playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
    Debug.Log("Got activity");
    var plugin = new AndroidJavaClass("com.bmad.exolib.Exo");
    Debug.Log("Found Plugin");
    plugin.CallStatic("test");
    Debug.Log("Found Test");
    plugin.CallStatic("initializePlayer");
    Debug.Log("Found Function");

Unfortunately I hit an error when trying to use the unityPlayer as the context for building the player. Error Unity AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/media3/exoplayer/ExoPlayer$Builder;

Any guidance would be appreciated.

marcbaechinger commented 1 year ago

Thanks for your report.

I think this is a problem with your build and it looks like the Java classes are not visible or some of them are not. You need to make sure that the ExoPlayer classes are accessible from Unity/native.

I'm not an expert in this matter, but probably someone from the community who has experience with Unity can help.

Gurwar commented 1 year ago

I added a baseProjectTemplate.gradle file to the plugins folder and added this in the dependencies
classpath 'com.android.tools.build:gradle:4.0.1'

I am using Unity 2021.3.16, is there anything else required for Unity to have access to Exoplayer?

Gurwar commented 1 year ago

I made a development build and got more details in the logcat, error is in the image. image

Gurwar commented 1 year ago

Still need help with the same issue.

Deva98-dev commented 3 months ago

Hi @Gurwar, are you find the solution. i also face the exact error. i don't what to do. i include all the dependencies in build.gradle, still facing these issue

Gurwar commented 3 months ago

Hi @Gurwar, are you find the solution. i also face the exact error. i don't what to do. i include all the dependencies in build.gradle, still facing these issue

No I was not able to find the solution and used AV Pro Video Player instead for my project.

Deva98-dev commented 3 months ago

Oh ok. Thanks @Gurwar