Java Android WebRTC提供创建抛出错误和冰聚集或滴流未发生

Java Android WebRTC提供创建抛出错误和冰聚集或滴流未发生,java,android,webrtc,Java,Android,Webrtc,我正在使用Gradle dependency实现“org.webrtc:google webrtc:1.0.30039” 这就是错误: E/rtc:在以下方面出现致命错误: gen/sdk/android/generated_metrics_jni/../../../../../../../../../../../../../../../../usr/local/google/home/sakal/code/webrtc aar release/src/sdk/android/src/jni/j

我正在使用Gradle dependency
实现“org.webrtc:google webrtc:1.0.30039”

这就是错误:

E/rtc:在以下方面出现致命错误: gen/sdk/android/generated_metrics_jni/../../../../../../../../../../../../../../../../usr/local/google/home/sakal/code/webrtc aar release/src/sdk/android/src/jni/jni_generator\u helper.h, 第94行上次系统错误:0检查失败:!环境->例外检查() A/libc:致命信号6(SIGABRT),tid 11556中的代码-6(网络线程 ),pid 11515(预计适用)

onSignalingChange:HAVE_LOCAL_OFFER是异常之前的最后一个日志调用

已创建SDP,但未发生冰滴,即根本不调用OnIceGatheringOnIceCandidate

Java活动代码:

public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
DataChannel mainDataChannel;
PeerConnection mainPeerConnection;
PeerConnectionFactory factory;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initializePeerConnectionFactory();
    initializeMyPeerConnection(); // Connection Initialization.
    startConnection(); //Getting the offer


private void initializePeerConnectionFactory() {

    PeerConnectionFactory.InitializationOptions initializationOptions =
            PeerConnectionFactory.InitializationOptions.builder(this)
                    .setEnableInternalTracer(true)
                    .createInitializationOptions();
    PeerConnectionFactory.initialize(initializationOptions);

    PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
    factory = PeerConnectionFactory.builder()
            .setOptions(options)
            .createPeerConnectionFactory();
}

private void startConnection() {
    Log.d(TAG, "startConnection: Starting Connection...");
    //CreateOffer fires the request to get ICE candidates and finish the SDP. We can listen to all these events on the corresponding observers.
    mainPeerConnection.createOffer(new SimpleSdpObserver() {
        @Override
        public void onCreateSuccess(SessionDescription sessionDescription) {
            Log.d(TAG, "onCreateSuccess: " + sessionDescription.description);
            mainPeerConnection.setLocalDescription(new SimpleSdpObserver(), sessionDescription);
        }

        @Override
        public void onCreateFailure(String s) {
            Log.e(TAG, "onCreateFailure: FAILED:" + s);
        }
    }, new MediaConstraints());
    Log.d(TAG, "startConnection: Start Connection end");
}

private void initializeMyPeerConnection() {
    Log.d(TAG, "initializeMyPeerConnection: Starting Initialization...");
    mainPeerConnection = createPeerConnection(factory);

    mainDataChannel = mainPeerConnection.createDataChannel("sendDataChannel", new DataChannel.Init());//Setting the data channel.
    mainDataChannel.registerObserver(new DataChannel.Observer() {
        @Override
        public void onBufferedAmountChange(long l) {

        }

        @Override
        public void onStateChange() {
            //Data channel state change
            Log.d(TAG, "onStateChange: " + mainDataChannel.state().toString());
        }

        @Override
        public void onMessage(DataChannel.Buffer buffer) {
            Toast.makeText(MainActivity.this, "Got the message!", Toast.LENGTH_SHORT).show();
        }
    });
    Log.d(TAG, "initializeMyPeerConnection: Finished Initializing.");
}

private PeerConnection createPeerConnection(PeerConnectionFactory factory) {
    List<PeerConnection.IceServer> iceServers = new LinkedList<>();
    iceServers.add(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
    PeerConnection.RTCConfiguration rtcConfiguration = new PeerConnection.RTCConfiguration(iceServers);
    PeerConnection.Observer pcObserver = new MyPeerConnectionObserver(TAG, mainPeerConnection);

    return factory.createPeerConnection(rtcConfiguration, pcObserver);
}
public类MainActivity扩展了AppCompatActivity{
私有静态最终字符串TAG=“MainActivity”;
数据通道主数据通道;
PeerConnection主PeerConnection;
PEERCONNECTION工厂;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
初始化PeerConnectionFactory();
InitializeMyPerConnection();//连接初始化。
startConnection();//获取报价
私有void initializePeerConnectionFactory(){
PeerConnectionFactory.InitializationOptions初始化选项=
PeerConnectionFactory.InitializationOptions.builder(此)
.setEnableInternalTracer(真)
.createInitializationOptions();
初始化(初始化选项);
PeerConnectionFactory.Options选项=新的PeerConnectionFactory.Options();
factory=PeerConnectionFactory.builder()
.setOptions(选项)
.createPeerConnectionFactory();
}
私有void startConnection(){
Log.d(标记“startConnection:启动连接…”);
//CreateOffer发出请求以获取ICE候选对象并完成SDP。我们可以在相应的观察者上侦听所有这些事件。
mainPeerConnection.createOffer(新的SimpleSdpObserver(){
@凌驾
public void onCreateSuccess(SessionDescription SessionDescription){
Log.d(标记“onCreateSuccess:+sessionDescription.description”);
mainPeerConnection.setLocalDescription(新的SimpleSdpObserver(),sessionDescription);
}
@凌驾
public void onCreateFailure(字符串s){
Log.e(标记“onCreateFailure:FAILED:”+s);
}
},new-media-constraints());
Log.d(标记“startConnection:Start-Connection-end”);
}
private void InitializeMyPerConnection(){
Log.d(标记“InitializeMyPerConnection:开始初始化…”);
mainPeerConnection=createPeerConnection(工厂);
mainDataChannel=mainPeerConnection.createDataChannel(“sendDataChannel”,new DataChannel.Init());//设置数据通道。
mainDataChannel.registerObserver(新的DataChannel.Observer(){
@凌驾
公共无效onBufferedAmountChange(长l){
}
@凌驾
公共无效状态更改(){
//数据通道状态变化
Log.d(标记“onStateChange:+mainDataChannel.state().toString());
}
@凌驾
消息上的公共无效(DataChannel.Buffer){
Toast.makeText(MainActivity.this,“收到消息!”,Toast.LENGTH_SHORT.show();
}
});
d(标记“InitializeMyPerConnection:完成初始化”);
}
专用PeerConnection createPeerConnection(PeerConnectionFactory){
List iceServers=newlinkedlist();
add(PeerConnection.IceServer.builder(“stun:stun.l.google.com:19302”).createIceServer());
PeerConnection.RTCConfiguration RTCConfiguration=新的PeerConnection.RTCConfiguration(iceServers);
PeerConnection.Observer pcObserver=新的MyPeerConnectionObserver(标记,主PeerConnection);
返回factory.createPeerConnection(rtcConfiguration,pcObserver);
}

}

我遇到了同样的错误,通过添加这一行解决了这个问题

android.enableDexingArtifactTransform.desugaring=false

gradle.properties
file

上,你能解释一下它为什么工作吗?