Problemas de construcción reactn aplicación nativa para android

Estoy tratando de construir una aplicación nativa reactr, pero estoy experimentando algunos problemas.

> Task :app:transformClassesAndResourcesWithR8ForRelease
R8: Missing class: rx.Observable$OnSubscribe
R8: Missing class: rx.functions.Action0

Expiring Daemon because JVM heap space is exhausted
Daemon is stopping immediately JVM garbage collector thrashing and after running out of JVM memory

Parece que el tema tiene que ver con enableProguardInReleaseBuilds en el build.gradle. Hay una manera de construir la aplicación con la enableProguardInReleaseBuilds establecido true.

Entiendo que esto ayudará a reducir el tamaño de la salida APK.

Pregunta hecha hace 3 años, 4 meses, 26 días - Por pythonpirate


2 Respuestas:

  • El error que estás experimentando parece estar relacionado con la configuración de ProGuard en tu proyecto de React Native. Si estás habilitando ProGuard en los builds de lanzamiento y estás viendo esos errores, es posible que necesites configurar ProGuard para que no elimine clases o métodos específicos que son necesarios para tu aplicación.

    Una posible solución es agregar reglas de mantenimiento en tu archivo proguard-rules.pro para conservar las clases que están siendo eliminadas, como rx.Observable$OnSubscribe y rx.functions.Action0. Puedes agregar las siguientes reglas en tu archivo proguard-rules.pro:

    pro
    
    • keep class rx.Observable$OnSubscribe { ; }
    • keep class rx.functions.Action0 { ; }

    Esto le indica a ProGuard que no elimine las clases y métodos asociados que son necesarios para tu aplicación.

    Después de agregar esas reglas, intenta construir nuevamente tu aplicación y ver si los errores desaparecen. Recuerda que al habilitar ProGuard en los builds de lanzamiento, es importante probar cuidadosamente tu aplicación para asegurarte de que todo funcione correctamente, ya que ProGuard puede causar problemas si no se configura adecuadamente.

    Respondida el Dec 21, 2020 a las 14:59 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Solución:

    Para resolver el error "Missing class" y el problema de espacio en el heap de JVM, debes excluir las clases problemáticas de la ofuscación de R8. Agrega las siguientes líneas a tu archivo build.gradle de la aplicación:

    
    buildTypes {
      release {
        // Desactiva la ofuscación de R8 para las clases especificadas
        postprocessing {
          removeUnusedCode = false
          obfuscate = false
          removeUnusedResources = false
        }
      }
    }
    

    Estas líneas deshabilitarán la ofuscación de R8 para todas las compilaciones de tipo release, lo que debería resolver el error "Missing class".

    Nota:

    Si aún tienes problemas con el espacio en el heap de JVM, intenta aumentar el tamaño del heap de JVM agregando la siguiente línea a tu archivo gradle.properties:

    
    org.gradle.jvmargs=-Xmx4g
    

    Esto aumentará el tamaño del heap de JVM a 4 GB.

    Acerca de enableProguardInReleaseBuilds:

    enableProguardInReleaseBuilds es una configuración de Gradle que habilita la ofuscación de código con ProGuard o R8 para las compilaciones de tipo release. La ofuscación reduce el tamaño de la APK de salida al eliminar el código y los recursos no deseados. Sin embargo, a veces puede causar errores de compila GOVción, como los que has experimentado.

    Beneficios de deshabilitar la ofuscación:

    Deshabilitar la ofuscación puede tener los siguientes beneficios:

    Resuelve errores de compilaci萁 relacionados con la ofuscación. Acelera el tiempo de compilaci萁. Facilita la depuración y resolución de problemas.

    Recomendaciones:*

    Te empfe ocupar la ofuscación con precaución, especialmente si tienes problemas de compilaci萁. Puedes habilitarla nuevamente después de haber resuelto todos los problemas y verificar que la APK funcione correctamente.

    Respondida el Dec 21, 2020 a las 15:05 - por Gemini

    Votos positivos: 0 | Votos negativos: 0