Giter Club home page Giter Club logo

webrtc's Introduction

WebRTC Binaries for Android

Latest version Release Date Total Downloads Maven Central

This repository contains unofficial distribution of WebRTC framework binaries for Android. This is heavily inspired by the work for providing WebRTC binaries for iOS and MacOS.

Since version M80, Google has deprecated their mobile binary libraries distributions (Was officially using the JCenter). To get the most up to date WebRTC library, you can compile it on your own, or you can use precompiled binaries from here or other sources.

๐Ÿ“ฆ Releases

The binary releases correspond with official Chromium releases and branches as specified in the Chromium dashboard.

๐Ÿ’ก Things to know

All binaries in this repository are compiled from the official WebRTC source code without any modifications to the source code or to the output binaries.

๐Ÿ“ข Requirements

  • minSdkVersion = 21

๐Ÿ“€ Binaries included

  • arm64-v8a
  • armeabi-v7a
  • x86
  • x86_64

๐Ÿšš Installation

Maven

The latest release is available on Maven Central

Gradle Groovy DSL

implementation 'com.dafruits:webrtc:123.0.0'

Gradle Kotlin DSL

implementation("com.dafruits:webrtc:123.0.0")

Manual

  1. Download the AAR from the releases section.
  2. Copy the AAR file into a libs folder inside your app folder.
  3. Include the following line in the dependencies section of your build.gradle.kts file
implementation(files("libs/libwebrtc-123.0.0.aar"))

Proguard

-keep class org.webrtc.** { *; }

๐Ÿ›  Compile your own WebRTC AAR

If you wish to compile your own WebRTC AAR, please refer to the following official guide: https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/android/

๐Ÿ“ƒ License

webrtc's People

Contributors

rno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webrtc's Issues

Binary file error is there

Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 30897 (signaling_threa), pid 30601 (ido.strangeconn)
Process name is com.nido.strangeconn, not key_process
Cmdline: com.nido.strangeconn
pid: 30601, tid: 30897, name: signaling_threa >>> com.nido.strangeconn <<<
#1 pc 00000000003fcb0c /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#2 pc 00000000003fd150 /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#3 pc 000000000037a65c /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#4 pc 00000000003731c8 /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#5 pc 0000000000373204 /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#6 pc 000000000041a2b4 /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#7 pc 00000000004196f4 /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
#08 pc 000000000041a63c /data/app/~~7EqGLyLAeIf0w4AslIAbqQ==/com.nido.strangeconn-bD20txg-BsXxXAIV6Z81lA==/lib/arm64/libjingle_peerconnection_so.so (BuildId: 8673458477f2f06c)
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; CpuFgTime = 0 ms; CpuBgTime = -653 ms.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; CpuKernelFgTime = 0 ms; CpuKernelBgTime = -223 ms.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; CpuUserFgTime = 0 ms ; CpuUserBgTime = -430 ms.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; CpuFgPower = 0.0 mAh.; CpuBgPower = -0.01395016111111111 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; AlarmFgWakeupCount = 0; AlarmBgWakeupCount = 0
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; JobFgCount = 0; JobBgCount = 0; JobFgTime = 0; JobBgTime = 0
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; SyncFgCount = 0; SyncBgCount = 0; SyncFgTime = 0; SyncBgTime = 0
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; WakeLockFgTime = 0 ms; WakeLockFgPower = 0.0 mAh.; WakeLockBgTime = 0 ms; WakeLockBgPower = 0.0 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; ScreenFgTime = 1122739 ms; ScreenFgPower = 27.507105499999998 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgWifiRxBytes = 107305 Bytes; BgWifiRxBytes = -1136628 Bytes; FgWifiTxBytes = 22701 Bytes; BgWifiTxBytes = -127848 Bytes; FgWifiRxPackets = 123 ; BgWifiRxPackets = -1108 ; FgWifiTxPackets = 132 ; BgWifiTxPackets = -1047 ; FgWiFiScanTimeMs = 0 ; BgWiFiScanTimeMs = 0 ; FgWiFiBatchScanTimeMs = 0 ; BgWiFiBatchScanTimeMs = 0
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgWifiRxPacketsPower = 0.07046875357627869 mAh; BgWifiRxPacketsPower = -0.6347917318344116 mAh; FgWifiTxPacketsPower = 0.07562500238418579 mAh; BgWifiTxPacketsPower = -0.5998438000679016 mAh; FgWifiScanPower = 0.0 mAh; BgWifiScanPower = 0.0 mAh; FgWifiBatchScanPower = 0.0 mAh; BgWifiBatchScanPower = 0.0 mAh; FgWiFiTotalPower = 0.14609375596046448 mAh; BgWiFiTotalPower = -1.2346355319023132 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgMobileRxBytes = 0 Bytes; BgMobileRxBytes = 0 Bytes; FgMobileTxBytes = 0 Bytes; BgMobileTxBytes = 0 Bytes; FgMobileRxPackets = 0 ; BgMobileRxPackets = 0 ; FgMobileTxPackets = 0 ; BgMobileTxPackets = 0 ; FgMobileActiveCount = 0 ; BgMobileActiveCount = 0 ; FgMobileActiveTime = 0 ; BgMobileActiveTime = 0
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgMobileRxPacketsPower = 0.0 mAh; BgMobileRxPacketsPower = 0.0 mAh; FgMobileTxPacketsPower = 0.0 mAh; BgMobileTxPacketsPower = 0.0 mAh; FgMobileTotalPower = 0.0 mAh; BgMobileTotalPower = 0.0 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgGpsTime = 0 ms; BgGpsTime = 0 ms.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgGpsPower = 0.0 mAh; BgGpsPower = 0.0 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgSensorTime = 0 ms; BgSensorTime = 0 ms.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgSensorPower = 0.0 mAh; BgSensorPower = 0.0 mAh.
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgCameraTime = 0 ms; BgCameraTime = 0 ms
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgCameraPower = 0.0 mAh; BgCameraPower = 0.0 mAh
AppStats: Uid = 11001; pkgName = com.nido.strangeconn; FgFlashLightTime = 0 ms; BgFlashLightTime = 0 ms

This are the error logs thrown when trying to execute factory.createPeerConnection

Failed to resolve ICE candidate mDNS hostnames

Later versions of Chrome uses mDNS hostnames for ICE candidates on the local network. This fails to resolve with the latest (110.0.0) version of this library with the following warning:

onLogMessage: (line 1351): Failed to resolve ICE candidate hostname 72ab300a-9d58-4969-bdef-91674f1e24bc.local with error 7

Android should have support for resolving mDNS, so I'm not sure why this fails.

app crash

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/datatransport/runtime/dagger/internal/Factory;
    at com.google.android.datatransport.runtime.DaggerTransportRuntimeComponent.builder(DaggerTransportRuntimeComponent.java:73)
    at com.google.android.datatransport.runtime.TransportRuntime.initialize(TransportRuntime.java:76)
    at com.google.firebase.datatransport.TransportRegistrar.lambda$getComponents$0(TransportRegistrar.java:38)
    at com.google.firebase.datatransport.-$$Lambda$TransportRegistrar$cPZPPfWZLxVwhtSgzJNU9TpSidE.create(lambda)
    at com.google.firebase.components.ComponentRuntime.lambda$discoverComponents$0$ComponentRuntime(ComponentRuntime.java:132)
    at com.google.firebase.components.-$$Lambda$ComponentRuntime$4FqOW9eOQsvFYo-HpMfxCOnPQr0.get(lambda)
    at com.google.firebase.components.Lazy.get(Lazy.java:53)
    at com.google.firebase.components.AbstractComponentContainer.get(AbstractComponentContainer.java:27)
    at com.google.firebase.components.ComponentRuntime.get(ComponentRuntime.java:45)
    at com.google.firebase.components.RestrictedComponentContainer.get(RestrictedComponentContainer.java:89)
    at com.google.firebase.messaging.FirebaseMessagingRegistrar.lambda$getComponents$0(FirebaseMessagingRegistrar.java:61)
    at com.google.firebase.messaging.-$$Lambda$FirebaseMessagingRegistrar$mnyerHGo6RZM3xcn1FE3fapbktk.create(lambda)
    at com.google.firebase.components.ComponentRuntime.lambda$discoverComponents$0$ComponentRuntime(ComponentRuntime.java:132)
    at com.google.firebase.components.-$$Lambda$ComponentRuntime$4FqOW9eOQsvFYo-HpMfxCOnPQr0.get(lambda)
    at com.google.firebase.components.Lazy.get(Lazy.java:53)
    at com.google.firebase.components.ComponentRuntime.doInitializeEagerComponents(ComponentRuntime.java:291)
    at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(ComponentRuntime.java:281)
    at com.google.firebase.FirebaseApp.initializeAllApis(FirebaseApp.java:594)
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:305)
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:269)
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:254)
    at com.google.firebase.provider.FirebaseInitProvider.onCreate(FirebaseInitProvider.java:51)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1751)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1726)
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(FirebaseInitProvider.java:45)
    at android.app.ActivityThread.installProvider(ActivityThread.java:5924)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:5516)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5455)
    at android.app.ActivityThread.-wrap2(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1550)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6190)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
 Caused by: java.lang.ClassNotFoundException: com.google.android.datatransport.runtime.dagger.internal.Factory
    at java.lang.VMClassLoader.findLoadedClass(Native Method)
    at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at com.google.android.datatransport.runtime.DaggerTransportRuntimeComponent.builder(DaggerTransportRuntimeComponent.java:73) 
    at com.google.android.datatransport.runtime.TransportRuntime.initialize(TransportRuntime.java:76) 
    at com.google.firebase.datatransport.TransportRegistrar.lambda$getComponents$0(TransportRegistrar.java:38) 
    at com.google.firebase.datatransport.-$$Lambda$TransportRegistrar$cPZPPfWZLxVwhtSgzJNU9TpSidE.create(lambda) 
    at com.google.firebase.components.ComponentRuntime.lambda$discoverComponents$0$ComponentRuntime(ComponentRuntime.java:132) 
    at com.google.firebase.components.-$$Lambda$ComponentRuntime$4FqOW9eOQsvFYo-HpMfxCOnPQr0.get(lambda) 
    at com.google.firebase.components.Lazy.get(Lazy.java:53) 
    at com.google.firebase.components.AbstractComponentContainer.get(AbstractComponentContainer.java:27) 
    at com.google.firebase.components.ComponentRuntime.get(ComponentRuntime.java:45) 
    at com.google.firebase.components.RestrictedComponentContainer.get(RestrictedComponentContainer.java:89) 
    at com.google.firebase.messaging.FirebaseMessagingRegistrar.lambda$getComponents$0(FirebaseMessagingRegistrar.java:61) 
    at com.google.firebase.messaging.-$$Lambda$FirebaseMessagingRegistrar$mnyerHGo6RZM3xcn1FE3fapbktk.create(lambda) 
    at com.google.firebase.components.ComponentRuntime.lambda$discoverComponents$0$ComponentRuntime(ComponentRuntime.java:132) 
    at com.google.firebase.components.-$$Lambda$ComponentRuntime$4FqOW9eOQsvFYo-HpMfxCOnPQr0.get(lambda) 
    at com.google.firebase.components.Lazy.get(Lazy.java:53) 
    at com.google.firebase.components.ComponentRuntime.doInitializeEagerComponents(ComponentRuntime.java:291) 
    at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(ComponentRuntime.java:281) 
    at com.google.firebase.FirebaseApp.initializeAllApis(FirebaseApp.java:594) 
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:305) 
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:269) 
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:254) 
    at com.google.firebase.provider.FirebaseInitProvider.onCreate(FirebaseInitProvider.java:51) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1751) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1726) 
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(FirebaseInitProvider.java:45) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:5924) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:5516) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5455) 
    at android.app.ActivityThread.-wrap2(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1550) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6190) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) 

Library `libjingle_peerconnection_so.so` not found

I have been trying to implement a WebRTC client using the following dependencies in my build.gradle.

    // implementation 'com.dafruits:webrtc:121.0.0'
    implementation fileTree(dir: 'libs', include: ['*.aar'])

I tried both the options (using an aar file and using the version published in the repository). But I have been getting this error.

java.lang.UnsatisfiedLinkError: dlopen failed: library "libjingle_peerconnection_so.so" not found
	at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
	at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
	at java.lang.System.loadLibrary(System.java:1661)
	at org.webrtc.NativeLibrary$DefaultLoader.load(NativeLibrary.java:20)
	at org.webrtc.NativeLibrary.initialize(NativeLibrary.java:41)
	at org.webrtc.PeerConnectionFactory.initialize(PeerConnectionFactory.java:296)

Could you help me identify why this is happening?

Unable to instantiate application

In 1.0.7 build encounter with a issue.

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.trackify.management.test_dev, PID: 11064 java.lang.RuntimeException: Unable to instantiate application com.trackify.management.MainApplication package com.trackify.management.test_dev: java.lang.ClassNotFoundException: Didn't find class "com.trackify.management.MainApplication" on path: DexPathList[[zip file "/data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/base.apk"],nativeLibraryDirectories=[/data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/lib/arm64, /data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1466) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1395) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6746) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2134) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.trackify.management.MainApplication" on path: DexPathList[[zip file "/data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/base.apk"],nativeLibraryDirectories=[/data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/lib/arm64, /data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52) at android.app.Instrumentation.newApplication(Instrumentation.java:1232) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1458) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1395)ย  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6746)ย  at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)ย  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2134)ย  at android.os.Handler.dispatchMessage(Handler.java:106)ย  at android.os.Looper.loopOnce(Looper.java:201)ย  at android.os.Looper.loop(Looper.java:288)ย  at android.app.ActivityThread.main(ActivityThread.java:7898)ย  at java.lang.reflect.Method.invoke(Native Method)ย  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)ย  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)ย  Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/trackify/remote/screenshare/LibraryBuilderListener; at java.lang.VMClassLoader.findLoadedClass(Native Method) at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738) at java.lang.ClassLoader.loadClass(ClassLoader.java:363) ... 16 more Caused by: java.lang.ClassNotFoundException: Didn't find class "com.trackify.remote.screenshare.LibraryBuilderListener" on path: DexPathList[[zip file "/data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/base.apk"],nativeLibraryDirectories=[/data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/lib/arm64, /data/app/~~-GG07L6_baGyS_IXw3IYIQ==/com.trackify.management.test_dev-CEAuKQMCRlTtwX1nqUWgZw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 19 more I/Process: Sending signal. PID: 11064 SIG: 9

Updating from webrtc:1.0.32006' to webrtc:114.0.0' issue

I am updating my build from Implementation 'org.webrtc:google-webrtc:1.0.32006' To this repo (114). My old webrtc was working fine and when i update to this repo my android app start getting crashed. There were no particular cause i can see in log but this log might be the cause of crash


 # Fatal error in: ../../../home/rno/webrtc/src/pc/peer_connection.cc, line 832
 # last system error: 0
 # Check failed: !IsUnifiedPlan()
 # AddStream is not available with Unified Plan SdpSemantics. Please use AddTrack instead.
20:35:34.782 libc com.example code -1 (SI_QUEUE) in tid 32347 (signaling_threa), pid 31746

My Complete Code:=

public class Video_Voice_Call_Fragment extends Fragment {

    private static final String TAG = "Video_Voice_Call_Frag";
    private static final int PERMISSION_REQUEST_CODE = 1;
    public static final int VIDEO_RESOLUTION_WIDTH = 1280;
    public static final int VIDEO_RESOLUTION_HEIGHT = 720;
    public static final int FPS = 30;

    private EglBase rootEglBase;
    private PeerConnectionFactory peerConnectionFactory;
    private VideoCapturer videoCapturer;
    private VideoSource videoSource;
    private VideoTrack localVideoTrack;
    private AudioTrack localAudioTrack;
    private SurfaceViewRenderer localVideoView;
    private SurfaceTextureHelper surfaceTextureHelper;
    private SurfaceViewRenderer remoteVideoView;
    private ImageButton greenCallButton;
    private ImageButton redCallButton;
    private MediaStream localMediaStream;
    OkHttpClient client;
    PeerConnection peerConnection,peerConnectionRemote;
    private String FCMToken_Other;
    TextView CallStatus;
    ImageView UserImage;
    SessionDescription localSDP;
    boolean isCaller = true;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_video_voice_call, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        
        initializePeerConnectionFactory();
        setupLocalTracks();
        setupUI(view);
        startCall();
    }


   
    private void initializePeerConnectionFactory() {
        // Initialize EGL context for rendering
        rootEglBase = EglBase.create();

        // Initialize PeerConnectionFactory
        PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions.builder(requireContext())
                .setEnableInternalTracer(true)
                .createInitializationOptions());

        DefaultVideoEncoderFactory videoEncoderFactory = new DefaultVideoEncoderFactory(rootEglBase.getEglBaseContext(),true,true);
        DefaultVideoDecoderFactory videoDecoderFactory = new DefaultVideoDecoderFactory(rootEglBase.getEglBaseContext());
        PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
        peerConnectionFactory = PeerConnectionFactory.builder()
                .setVideoDecoderFactory(videoDecoderFactory)
                .setVideoEncoderFactory(videoEncoderFactory)
                .setOptions(options)
                .createPeerConnectionFactory();

        //Set EGL context
        localVideoView.init(rootEglBase.getEglBaseContext(), null);
        localVideoView.setMirror(true);
    }

    private void setupLocalTracks() {
        // Create video capturer
        videoCapturer = createVideoCapturer();

        // Create video source
        videoSource = peerConnectionFactory.createVideoSource(false);
        localVideoTrack = peerConnectionFactory.createVideoTrack("local_video", videoSource);
        // Create audio source and track
        AudioSource audioSource = peerConnectionFactory.createAudioSource(new MediaConstraints());
        localAudioTrack = peerConnectionFactory.createAudioTrack("local_audio", audioSource);

        surfaceTextureHelper = SurfaceTextureHelper.create("SurfaceHelper",rootEglBase.getEglBaseContext());
        videoCapturer.initialize(surfaceTextureHelper,getActivity(),videoSource.getCapturerObserver());
        if (videoCapturer!=null){
            videoCapturer.startCapture(VIDEO_RESOLUTION_WIDTH,VIDEO_RESOLUTION_HEIGHT,FPS);
            localVideoTrack.addSink(localVideoView);
        }

        // Create local media stream
        localMediaStream = peerConnectionFactory.createLocalMediaStream("local_stream");
        localMediaStream.addTrack(localVideoTrack);
        localMediaStream.addTrack(localAudioTrack);

    }

    private VideoCapturer createVideoCapturer() {
        VideoCapturer videoCapturer;
        CameraEnumerator enumerator = new Camera2Enumerator(requireContext());

        final String[] deviceNames = enumerator.getDeviceNames();

        // Find front facing camera
        for (String deviceName : deviceNames) {
            if (enumerator.isFrontFacing(deviceName)) {
                videoCapturer = enumerator.createCapturer(deviceName, null);
                if (videoCapturer != null) {
                    return videoCapturer;
                }
            }
        }

        // Front facing camera not found, use the first available
        if (deviceNames.length > 0) {
            return enumerator.createCapturer(deviceNames[0], null);
        } else {
            return null;
        }
    }

    



    private void startCall() {
        // Create an offer and set local description
        peerConnection = getPeerConnection();
        peerConnection.addStream(localMediaStream);
        peerConnection.createOffer(new SimpleSdpObserver() {
            @Override
            public void onCreateSuccess(SessionDescription sessionDescription) {
                Log.d(TAG, "onCreateSuccess: " + sessionDescription.description);
                //peerConnection.setLocalDescription(new SimpleSdpObserver(), sessionDescription);
                localSDP = sessionDescription;
            }

            @Override
            public void onCreateFailure(String s) {
                Log.e(TAG, "onCreateFailure: " + s);
            }
        }, new MediaConstraints());
    }

    private PeerConnection getPeerConnection(){
        ArrayList<PeerConnection.IceServer> iceServers = new ArrayList<>();
        List<String> STUNList= Arrays.asList(
                "stun:stun.l.google.com:19302",
                "stun:stun1.l.google.com:19302",
                "stun:stun2.l.google.com:19302",
                "stun:stun3.l.google.com:19302",
                "stun:stun4.l.google.com:19302",
                "stun:stun.vodafone.ro:3478",
                "stun:stun.samsungsmartcam.com:3478",
                "stun:stun.services.mozilla.com:3478"

        );
        for(String i:STUNList){
            PeerConnection.IceServer.Builder iceServerBuilder = PeerConnection.IceServer.builder(i);
            iceServerBuilder.setTlsCertPolicy(PeerConnection.TlsCertPolicy.TLS_CERT_POLICY_INSECURE_NO_CHECK); //this does the magic.
            PeerConnection.IceServer iceServer =  iceServerBuilder.createIceServer();
            iceServers.add(iceServer);
        }
        PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);

        PeerConnection.Observer observer = new PeerConnection.Observer() {
            @Override
            public void onSignalingChange(PeerConnection.SignalingState signalingState) {
                Log.d(TAG, "onSignalingChange: "+signalingState);
            }

            @Override
            public void onIceConnectionChange(PeerConnection.IceConnectionState iceConnectionState) {
                Log.d(TAG, "onIceConnectionChange: "+iceConnectionState);
            }

            @Override
            public void onIceConnectionReceivingChange(boolean b) {
                Log.d(TAG, "onIceConnectionReceivingChange: Boolean = "+b);
            }

            @Override
            public void onIceGatheringChange(PeerConnection.IceGatheringState iceGatheringState) {
                Log.d(TAG, "onIceGatheringChange: "+iceGatheringState);
            }

            @Override
            public void onIceCandidate(IceCandidate iceCandidate) {
                Log.d(TAG, "onIceCandidate: "+iceCandidate);
               
            }

            @Override
            public void onIceCandidatesRemoved(IceCandidate[] iceCandidates) {
                Log.d(TAG, "onIceCandidatesRemoved: "+iceCandidates);
            }

            @Override
            public void onAddStream(MediaStream mediaStream) {
                Log.d(TAG, "onAddStream: "+mediaStream);
            }

            @Override
            public void onRemoveStream(MediaStream mediaStream) {
                Log.d(TAG, "onRemoveStream: "+mediaStream);
            }

            @Override
            public void onDataChannel(DataChannel dataChannel) {
                Log.d(TAG, "onDataChannel: "+dataChannel);
            }

            @Override
            public void onRenegotiationNeeded() {
                Log.d(TAG, "onRenegotiationNeeded: ");
            }

            @Override
            public void onAddTrack(RtpReceiver rtpReceiver, MediaStream[] mediaStreams) {
                Log.d(TAG, "onAddTrack: "+rtpReceiver+"--- "+mediaStreams);
            }
        };
        Log.d(TAG, "generateICE: ");
        return peerConnectionFactory.createPeerConnection(rtcConfig,observer);
        }



    
}

Failed to transform libwebrtc.aar to match attributes {artifactType=jar}.

First of all thank you for providing prebuilt version of the webrtc for android.

I was using last official webrtc aar and then I try to use your prebuilt libwebrtc in my project but I am getting following error. What mistake I am doing? I will be very appricated if help me.

Failed to transform libwebrtc.aar to match attributes {artifactType=jar}.
> Execution failed for JetifyTransform: /bla bla bla/libs/libwebrtc.aar.
> Failed to transform '/bla bla bla/libs/libwebrtc.aar' using Jetifier. Reason: Cannot open a library at 'FileMapping(from=/bla bla bla/libs/libwebrtc.aar, to=/Users/tolgacakiroglu/.gradle/caches/transforms-2/files-2.1/ab6a11e32a1b73a30ff2cc67f50b99b0/jetified-libwebrtc.aar)'. (Run with --stacktrace for more details.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.