Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Activo HTML externo no incluido en React Nativo en la compilación de producción para su uso por Webview

Estoy creando una aplicación de Android con React Native. Tiene una vista web que lee un archivo HTML localmente.

Este es el código que estoy usando para mostrar la visualización web.

<WebView ref="webview" source={require('./helloworld.html')} javaScriptEnabled style={styles.webView} /> 

Esto funciona bien durante la compilación del desarrollo. El archivo HTML se carga en la vista web y se procesa bien.

Pero no en la versión de Android / producción. La vista web está vacía y si examino mediante chrome: // inspeccionar, la vista web está vacía y no carga el archivo HTML.

De lo que yo entiendo es que el React Native falla en empaquetar helloworld.html como un activo durante la generación de producción de Android. Me di cuenta de que funciona bien en iOS.

¿Alguna de idea de cómo arreglarlo?

  • ¿Cómo descargar archivos de Android de vista web?
  • Pausar vídeo WebView en lugar de WebView completo
  • 'Webpage not available' con WebView.loadData () SOLAMENTE en el emulador
  • Ajuste de los contenidos de la página web dentro de una vista web (Android)
  • El contenido favorito no se muestra correctamente en la vista web
  • WebView con https loadUrl muestra la página en blanco
  • Cómo interceptar url cargas en WebView (android)?
  • WebView con certificado de cliente SSL en Android 4 ICS
  • 3 Solutions collect form web for “Activo HTML externo no incluido en React Nativo en la compilación de producción para su uso por Webview”

    Según las discusiones aquí en https://github.com/facebook/react-native/issues/6004 , es un defecto conocido. Los activos no están incluidos en la compilación de producción de Android, pero funcionan bien en la versión de desarrollo.

    Una solución es almacenar activos en la carpeta de activos de Android manualmente y luego cargar el recurso utilizando

     <WebView source={{ uri: 'file:///android_asset/helloworld.html' }} startInLoadingState={true} /> 

    En la producción de iOS construir esta solución es el trabajo

     <WebView source={{ uri: 'helloworld.html' }} startInLoadingState={true} /> 

    En RN 0,40,

     require('./file.html') 

    Está fallando para mí en la variante de generación de compilación. Está bien en las compilaciones de depuración.

    Como solución, pude poner el archivo en el directorio de activos de android, y

     { uri: file:///android_asset/file.html } 

    Carga desde allí. Desafortunadamente para mi situación, el archivo html carga librerías de terceros remotas que hacen referencia internamente a los recursos agnósticos del protocolo: eg, //domain.com/file.json . Así que todos se convirtió en file://domain.com/file.json enlaces y, por supuesto, no. Yo mono patched XMLHttpRequest para cambiar // … a https: // … que resolvió ese problema, pero ninguna de las imágenes que libs intentan cargar, se cargará. Todos rotos. Y no he podido encontrar una manera de determinar cómo se ven las solicitudes para esas imágenes, para ver por qué se rompen o fallan a cargar.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.