Внешний HTML-ресурс, не связанный с React Native в сборке для использования Webview

Я создаю приложение для Android, используя React Native. Он имеет веб-представление, которое читает HTML файл локально.

Это часть кода, который я использую для рендеринга webview.

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

Это хорошо работает во время разработки. Файл HTML загружается в webview и хорошо отображает.

Но это не на сборке/выпуске Android. Веб-просмотр пуст, и если я проверяю использование chrome://inspect, веб-просмотр пуст и не загружает HTML файл.

Из того, что я понимаю, React Native не может передать helloworld.html в качестве актива во время сборки Android. Я заметил, что он отлично работает на iOS.

Есть идея, как это исправить?

Ответ 1

В соответствии с обсуждаемыми здесь обсуждениями https://github.com/facebook/react-native/issues/6004, это известный дефект. Активы не поставляются для сборки Android, но отлично работают в dev build.

Решение - это хранить активы в папке с базами Android вручную, а затем загружать ресурс с помощью

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

Ответ 2

на iOS production build это решение работает

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

Ответ 3

на RN 0,40,

require('./file.html') 

не подходит для меня в версии версии сборки. Это хорошо в отладочных сборках.

Как обходной путь, я смог поместить файл в каталог android assets dir и

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

загрузка оттуда. К сожалению, для моей ситуации файл html загружает удаленные сторонние библиотеки, которые внутренне ссылаются на протокольные агностические ресурсы: например, //domain.com/file.json. Таким образом, все они превратились в file://domain.com/file.json ссылки и, конечно, не удались. Я обезьяна заплатила XMLHttpRequest, чтобы изменить //... на https://..., которая решила эту проблему, но ни одно из изображений, которые эти libs не загружают, будет загружаться. все сломанно. И я не смог найти способ определить, как выглядят запросы для этих изображений, чтобы понять, почему они ломаются/не могут загрузить.