Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Video Android SDK is not Side-by-Side Compatible with other WebRTC Libraries #340

Closed
aaalaniz opened this issue Oct 10, 2018 · 18 comments

Comments

@aaalaniz
Copy link
Member

commented Oct 10, 2018

Description

We have received questions about using the Video Android SDK alongside either Google's WebRTC library or another WebRTC based library. The Video Android SDK can not be pulled into a project alongside other WebRTC dependent libraries due to class conflicts in the package org.webrtc and conflicting native module names (libjingle_peerconnection_so). Developers could modify their build.gradle to avoid the Java class conflicts, but using our SDK alongside another WebRTC library results in undefined behavior. This issue has existed since the launch of Twilio Video on Android.

We are actively working on a long-term resolution for this issue but we do not have a precise timeline for a resolution. Any progress or updates will be submitted as comments to this issue. Please feel free to provide any additional details or use cases related to side-by-side support.


Steps to Reproduce

  1. Add the following to a build.gradle and compile your app.

Code

dependencies {
    implementation 'org.webrtc:google-webrtc:1.0.25003'
    implementation 'com.twilio:video-android:3.0.0'
}

Scope

The scope of side-by-side support can be described as follows:

As a consumer of the Video Android SDK and another WebRTC library, I can use each library in isolation within the same application but not at the same time. Using both libraries simultaneously results in undefined behavior because side-by-side support does not include interoperability.

@ducna255

This comment has been minimized.

Copy link

commented Dec 17, 2018

I'm getting this issue when trying to implement Twilio and Tokbox sdk to our app. How can I avoid the Java class conflict by modifying the build.gradle? (I dont need side-by-side support just want to use them simultaneously)

@SungateLtd

This comment has been minimized.

Copy link

commented Dec 25, 2018

Ho Ducana255 ... Have you found any solution for this ? I'm getting conflict issue with Twillio and Antmedia libraries

@andschdk

This comment has been minimized.

Copy link

commented Feb 5, 2019

What exactly does this mean? 🤔

I can use each library in isolation within the same application but not at the same time

Will I be able to build the application with both, but not being able to import both in an implementation? Or am I not even able to build it with both libraries?

Currently I can't even build it because of conflicts with libjingle_peerconnection_java.jar
But the quote made me think there is a solution? Just not sure what isolation really means here. Can you elaborate @aaalaniz?

Thanks.

@aaalaniz

This comment has been minimized.

Copy link
Member Author

commented Feb 5, 2019

Hey @andschdk

Great question! Side-by-side support does mean that you can build your application with both dependencies declared in your build.gradle file. I'll explain "in isolation" with an example.

Let's say you want to conduct A/B testing with the Video Android SDK and another WebRTC based library in your application. With side-by-side support, you could develop a Video experience in your application (eg. Activity, Fragment, Service) and using some configuration you could toggle this experience to be powered by Video Android or another WebRTC based library. Both implementations could live in your application and your users could provide feedback on both experiences.

Side-by-side support does not mean Video Android primitives (eg. Room, Audio/Video/Data Track) can interoperate with primitives from other WebRTC based libraries. More specifically, we provide no guarantees on creating tracks or connecting to Rooms while simultaneously calling APIs of another WebRTC based library. Doing this results in undefined behavior. Going back to the A/B testing example, we provide no guarantee that you could build a Video experience using a combination of the Video Android SDK and another WebRTC based library.

I hope this helps. Let me know if I can clarify anything else.

Thanks!

@andschdk

This comment has been minimized.

Copy link

commented Feb 5, 2019

Hi @aaalaniz ,
Thank you very much for the clarification! I highly appreciate it.

That is good news in my case as I am intending to do something similar to the "a/b test" example.
However I still have the conflict when trying to build the application. What measures are taken to be able to build it? Some simple gradle setup?

Thanks.

@aaalaniz

This comment has been minimized.

Copy link
Member Author

commented Feb 6, 2019

Hey @andschdk

The solution to this problem requires our teams to modify the way we build and integrate our WebRTC dependency into our SDKs. I can't provide a timeline on when this will be done, but the work is on our roadmap.

From your perspective, it should "just work". Once implemented and released on our end, you should be able to consume the Video Android SDK in your build.gradle alongside another WebRTC based library with no special modifications to your build.gradle file.

Let me know if I need to clarify anything.

Thanks!

@andschdk

This comment has been minimized.

Copy link

commented Feb 6, 2019

Hi @aaalaniz ,
Thank you for replying. So currently both the isolation and the side-by-side support case is currently not supported?

@aaalaniz

This comment has been minimized.

Copy link
Member Author

commented Feb 7, 2019

That is correct @andschdk

We will provide updates on this ticket as progress is made.

@No1joey

This comment has been minimized.

Copy link

commented Mar 14, 2019

My development has been effected by this. Seeing as this known issue is 6 months old, I assume a fix is coming very soon?

@idelgado

This comment has been minimized.

Copy link
Contributor

commented Mar 15, 2019

Unfortunately this is not in our roadmap for Q1. We will follow up once we have a timeline on when we can support this. If you can share your use case in a support ticket we can determine whether there are other options that can work in this case. You can post the ticket # here and I can follow up.

@No1joey

This comment has been minimized.

Copy link

commented Mar 15, 2019

This wasn't in your road map for Q4 2018, it obviously won't be fixed in Q1 because there is two weeks left, so obviously we're talking about Q2.

It's been 6 months, I think your customers deserve something - what progress has been made or when it will be fixed.

@andschdk

This comment has been minimized.

Copy link

commented Mar 15, 2019

Hi @idelgado
I just submitted ticket 1746894. Would be more than happy if you would follow up on it.

Thanks.

@criptis

This comment has been minimized.

Copy link

commented Jun 11, 2019

Hi @idelgado, we have submitted ticket 1892019, this is currently a blocker for us, if you could take a look it would be really helpful.

Thanks :)

@aymenn

This comment has been minimized.

Copy link

commented Jun 19, 2019

Hi @criptis and @andschdk and @No1joey,

I wanted to give you an update on this ticket. First, thank you for using/considering Twilio and sorry for the delay.

We have made some great progress with this ticket, and we are hoping to get something out soon. Unless we find a major blocker, this could be within the next two weeks.

Thank you for your patience.

Kind regards,
Aymen Naim

@rpanadero

This comment has been minimized.

Copy link

commented Jun 19, 2019

@aymenn good news! My team and I are also blocked by this issue. Could you provide us with a more specific estimated date? It would be really helpful to be able to reschedule the developments with our customer until this new SDK is come out. We don't want that our customer decides to get rid of using Twilio because of this incompatibility with other webrtc libraries.

Thank you so much for your help!

@No1joey

This comment has been minimized.

Copy link

commented Jun 19, 2019

Gave up waiting for this months ago, just use - Voice 2.x SDK + Video 4.x SDK.

To fix the missing custom data being able to be received on opponents end (Voice 2,x), just retrieve this data from your server when call incoming.

@idelgado

This comment has been minimized.

Copy link
Contributor

commented Jul 3, 2019

Voice & Video SDK can now be built side-by-side with Voice 3.2.0 or above. See this changelog for additional details: https://www.twilio.com/docs/voice/voip-sdk/android/3x-changelog#320

@idelgado idelgado closed this Jul 3, 2019

This was referenced Aug 5, 2019
@jayarajm

This comment has been minimized.

Copy link

commented Sep 16, 2019

I'm getting this issue when trying to implement Twilio and Tokbox sdk to our app. How can I avoid the Java class conflict by modifying the build.gradle? (I dont need side-by-side support just want to use them simultaneously)

Did you able to done this? If yes, can you help me to fix this?

@Alton09 Alton09 referenced this issue Sep 17, 2019
1 of 1 task complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
10 participants
You can’t perform that action at this time.