反应原生活动崩溃,可能与打包okhttp3有关

V P*_*V P 4 react-native okhttp3

一直在苦苦挣扎这一周,没有成功.

我从一个好的锅炉板应用程序(只是另一个应用程序)开始,并添加了一个单击,其中详细活动是React本机活动.

一旦我点击,整个应用程序崩溃.

03-25 14:58:35.731 2746-4224/com.justanotherandroidapp.develop E/AndroidRuntime:FATAL EXCEPTION:AsyncTask#2进程:com.justanotherandroidapp.develop,PID:2746 java.lang.RuntimeException:执行doInBackground时发生错误()在android.os.AsyncTask $ 3.done(AsyncTask.java:325)java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)java.util.concurrent.FutureTask.setException(FutureTask.java: 223)java.util.concurrent.FutureTask.run(FutureTask.java:242)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor) .java:607)在java.lang.Thread.run(Thread.java:761) 引起:java.lang.NoSuchMethodError:没有虚方法setCallWebSocket(Lokhttp3/Call;)类Lokhttp3/internal/Internal中的V; 或者它的超类('okhttp3.internal.Internal'的声明出现在/data/app/com.justanotherandroidapp.develop-2/split_lib_dependencies_apk.apk:classes57.dex)okhttp3.ws.WebSocketCall.enqueue(WebSocketCall.java : 108) 位于com.facebook.react.devsupport的com.facebook.react.devsupport.InspectorPackagerConnection $ Connection.connect(InspectorPackagerConnection.java:243)com.facebook.react.devsupport.InspectorPackagerConnection.connect(InspectorPackagerConnection.java:44) .DevServerHelper $ 3.doInBackground(DevServerHelper.java:168)at com.facebook.react.devsupport.DevServerHelper $ 3.doInBackground(DevServerHelper.java:164)at android.os.AsyncTask $ 2.call(AsyncTask.java:305)at java .util.concurrent.FutureTask.run(FutureTask.java:237)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607) )在java.lang.Thread.run(Thread.java:761) 

                                                                             --------- beginning of system
Run Code Online (Sandbox Code Playgroud)

整个应用程序在GitHub上 https://github.com/vladp/Just-Another-Android-App

它在ReactNative的DevSuportManagerImpl.java中崩溃(使用react native 0.42,API 25)在这两个调用之间崩溃

  mDevServerHelper.openPackagerConnection(this);
  mDevServerHelper.openInspectorConnection();
Run Code Online (Sandbox Code Playgroud)

(node_modules\react-native\android\com\facebook\react\react-native\0.42.3\react-native-0.42.3-sources.jar!\ com\facebook\react\devsupport\DevSupportManagerImpl中的第878行,第879行.java)

这个问题并没有改善我是否从build.gradle中删除或添加okhttp和okhttp-ws

//React Native  -- start
compile ("com.facebook.react:react-native:0.42.+"){
            // https://github.com/facebook/react-native/issues/10233
            exclude group:'com.facebook.stetho', module:'stetho'
            exclude module: 'jsr305'

}

compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.okhttp3:okhttp-ws:3.4.2'
Run Code Online (Sandbox Code Playgroud)

提前感谢任何帮助.

V P*_*V P 8

终于弄明白该怎么做了.我强制gradle将对okhttp的所有引用解析为版本3.4.1.值得庆幸的是,在我的测试应用程序中,所有其他组件都被容忍为"强制使用最低公分母"(即本机反应原理使用的okhttp的3.4.1版本).

configurations.all {
    resolutionStrategy {
        // force certain versions of dependencies (including transitive)
        force 'com.squareup.okhttp3:okhttp:3.4.1'
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的这条线原来是我花了大概30个小时的解决方案......