Integré React Native en un proyecto de Android existente. El código se compila bien, pero cuando llego a la parte de mi aplicación que inicializa React Native, la aplicación falla .
Parte relevante del backtrace:
java.lang.RuntimeException: Requested enabled DevSupportManager, but DevSupportManagerImpl class was not found or could not be created Caused by: java.lang.RuntimeException: Requested enabled DevSupportManager, but DevSupportManagerImpl class was not found or could not be created at com.facebook.react.devsupport.DevSupportManagerFactory.create(DevSupportManagerFactory.java:77) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance(Native Method) at com.facebook.react.devsupport.DevSupportManagerFactory.create(DevSupportManagerFactory.java:70) Caused by: java.lang.NoClassDefFoundError: com.facebook.react.bridge.JSPackagerWebSocketClient at com.facebook.react.devsupport.DevServerHelper.<init>(DevServerHelper.java:108) at com.facebook.react.devsupport.DevSupportManagerImpl.<init>(DevSupportManagerImpl.java:141)La parte clave es
java.lang.NoClassDefFoundError: com.facebook.react.bridge.JSPackagerWebSocketClient.No estoy seguro de por qué no se encontraría esta clase. La ubicación donde ocurre este bloqueo en el código fuente de React Native está aquí .
ACTUALIZACIÓN: si es relevante, recibí errores de tiempo de compilación antes de esto que arreglé con la solución aquí (que excluye okhttp-ws) que me pregunto puede estar causando esto.
ACTUALIZACIÓN 2: estoy empezando a pensar que esto está relacionado con la exclusión de okhttp-ws, ya que noté que en JSPackagerWebSocketClient.java hay importaciones como:
import okhttp3.ws.WebSocket;Entonces, supongo que la verdadera pregunta es cuál es la solución real para el problema original que estaba teniendo, que es:
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: okhttp3/internal/ws/RealWebSocket$1.classEstoy usando React Native v0.31.0.
Recibo ese error a veces cuando anteriormente tenía habilitado "Depurar JS de forma remota", en el menú de depuración, cuando ejecuto mi proyecto.
Primero, cierre la pestaña anterior del navegador web a la que estaba conectada la aplicación, y luego en la aplicación descarte el error, luego deshabilite "Depurar JS de forma remota" y vuelva a cargar.
Esta es una solución para mi error JSPackagerWebSocketClient común descrito, pero no estoy seguro de todas las condiciones en torno a su problema, como su proceso de integración, sus configuraciones de Android, cómo ejecutó la aplicación, o tal vez es un problema con una versión anterior de RN .