react-native WebView组件使用本地html时候,一般都是这样使用

var source =  require('../html/my.html') : 

在debug模式下,android和ios是没有问题的
然而,在release模式下,也就是打包的时候,安卓会无法读取到html路径,导致无法加载成功!

在网上查找一番资料之后,得知要把html放在android的资源目录下面,并且使用file:///android_asset/路径才能加载!
具体路径:android/app/src/main/assets
我们在这个路径下面建立html文件夹,专门放置我们的html
代码修改一下

// 区分ios和androidvar source = (Platform.OS == 'ios') ? require('../html/my.html') : {uri: "file:///android_asset/html/my.html"}

嗯~~那这样我们每次修改html代码都得复制两份代码,有点不可接受
修改一下,修改html代码后每次编译自动复制到android资源目录下
打开android/app/build.gradle
增加

// Android currently requires the HTML files in React Native to be// in the Android Assets// https://github.com/facebook/react-native/pull/17304task copyReactNativeHTML(type: Copy) {    from '../../app/html'    into 'src/main/assets/html'}// Note that you may need to add other build variantsgradle.projectsEvaluated {    bundleDebugJsAndAssets.dependsOn(copyReactNativeHTML)    bundleReleaseJsAndAssets.dependsOn(copyReactNativeHTML)}

ok,这样每次编译android就不用再去手动复制了

等等~
我们知道debug模式是没问题的,这样为了兼容debug模式不用去手动复制,再次修改,最终如下

var source = ""if (__DEV__) {      // debug模式      source = require('../html/my.html')} else {      // release模式      source = (Platform.OS == 'ios') ? require('../html/my.html') : {        uri: "file:///android_asset/html/my.html"      }}

转载于:https://www.cnblogs.com/chriiess/p/8919175.html

更多相关文章

  1. 从头到尾给你讲明白Android(安卓)View实现原理
  2. Android(安卓)Audio代码分析26 - Audio Strategy
  3. [置顶] Android(安卓)实现 WheelView
  4. Android(安卓)OpenGL ES 分析与实践
  5. android游戏编程的学习笔记(以植物大战僵尸等游戏源代码解析为例)
  6. Android(安卓)4.0 Service Framework
  7. Android之ActivityManager与Proxy模式的运用
  8. Android(安卓)Jetpack系列——ViewModel源码分析
  9. Android应用程序启动过程——Launcher源码分析

随机推荐

  1. Android中使用自定义Dialog时match_paren
  2. iphone/android比较学习之──获取屏幕分
  3. Android中常用的五种布局
  4. 【Android】AS环境下,在布局中使用android
  5. android 修改键盘enter图标,设置搜索等图
  6. Android调用Unity3D
  7. Android(安卓)摇一摇太灵敏的解决方法
  8. Android安全机制
  9. Android(安卓)XML解析
  10. Android开发实践 界面编程(上)