Внешний 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 не загружают, будет загружаться. все сломанно. И я не смог найти способ определить, как выглядят запросы для этих изображений, чтобы понять, почему они ломаются/не могут загрузить.