将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法

  • 前言
  • Hash
  • History
  • 完事

前言

之前有个项目要同时做小程序和APP,本着节省时间的想法,研究了下uni-app,但是发现从中打包成APP不太靠谱,所以想着打包成H5,然后在APP里头加载。虽然最终还是分开用原生来实现了,不过这个技术选型还是得记录下来,免得以后遇到同类型项目,又忘了这茬。

Hash

在uni-app项目中,有个配置文件manifest.json,打开它,选择H5配置,修改路由模式为hash,并且将运行基础路径修改成相对路径。

然后选择发行-网站,进行打包,就能在项目根目录的unpackage/dist/build/h5得到打包后的H5文件,这个时候,我们直接双击index.html就能在浏览器中打开。

既然能正常在浏览器中打开,那直接也能在Android的webview中打开了。
举例:我们把h5的整个文件夹,放在Android工程的assets文件夹中,然后在webview中加载file:android_asset/h5/index.html即可。

History

如果基于不可抗力,必须选择History路由模式打包H5,就选择以下方法。

  1. 添加依赖

https://github.com/yanzhenjie/AndServer 参考官方说明

  1. 将打包出来的h5的整个文件夹,放在Android工程的assets文件夹中
  2. 添加配置代码:
@Config
class AppConfig: WebConfig {override fun onConfig(context: Context?, delegate: WebConfig.Delegate?) {context?: returndelegate?: returndelegate.addWebsite(AssetsWebsite(context, "/h5/"))}
}/*
@Controller
class PageController {@GetMapping("/")fun index(): String ="forward:/index.html"
}*/
  1. 启动本地服务
val mAndServer = AndServer.webServer(this).port(8089).timeout(10, TimeUnit.SECONDS).listener(object : Server.ServerListener{override fun onStarted() {println("本地服务器启动")// 加载H5webview.loadUrl("http://127.0.0.1:8089/index.html")}override fun onStopped() {println("本地服务器停止")}override fun onException(e: Exception?) {e?.printStackTrace()}}).build()mAndServer.startup()

完事

将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法相关推荐

  1. 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )

    文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...

  2. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    这篇文章转自博客园 Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putPa ...

  3. android判断应用是否回到桌面的两种方法

    有时候需要判断APP是否被切换到后台,然后做相应处理,如显示悬浮窗等.怎么判断呢,有两种方法: 第一种: /*** 判断当前界面是否是桌面*/private boolean isHome() {Str ...

  4. android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...

    Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者 ...

  5. Android获取的状态栏高度,Android中获取状态栏高度的两种方法分享

    前言 最近在做一个关于FAB的功能的时候需要获取状态栏的高度,在网上查了很多种方法,下面是选出的比较合理的两个方法.主要参考stackoverflow的这篇问答:http://stackoverflo ...

  6. Java/Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  7. Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  8. Android studio中TextView改变字体的两种方式(如仿宋、隶书)

    在Android中系统默认的字体有三种,通过在TextView中加上android:typeface="sans"来改变,而sans就是三种当中的其中的一种,还有两种分别是&quo ...

  9. android 强制全屏,[Android]设置Activity为全屏显示的两种方法

    1. 方法1:AndroidManifest.xml 里,Activity的 android:theme  指定为" @android :style/Theme.NoTitleBar.Ful ...

最新文章

  1. 3、(小数类型)FLOAT、DOUBLE、DECIMAL
  2. 使用之location和rewrite用法
  3. 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)
  4. XML文档处理(树的应用)
  5. mysql-电商库演练1-创建数据-基本查询练习
  6. WIN7 X64 如何删除计算机管理里面一些无效的服务
  7. Linux shell脚本详解及实战(一)——shell简介、shell变量及脚本规范
  8. neo4j安装与示例
  9. JavaScript parseInt() toString()函数
  10. mysql中url的格式_MySQL JDBC URL中的格式以及参数介绍
  11. tushare平台介绍
  12. 实现数据库版的图书管理系统
  13. 华为自研OS操作系统,今秋是否真的会面市?
  14. Word 如何取消自动编号
  15. ts快捷键 vscode_vscode这篇就够了
  16. 信而泰ALPS 用户管理——网络测试仪实操
  17. 基于IE内核的一个WEB打印实现方案
  18. Python爬虫之js加密破解,抓取网易云音乐评论生成词云
  19. 华为5g鸿蒙麒麟,华为5G手机渲染图曝光,鸿蒙+麒麟985+5G基带,参考价格很良心...
  20. 图像处理---HSV变换

热门文章

  1. 著名linux网站 社区
  2. 淘品牌“出淘”上市:韩都衣舍挂牌新三板
  3. FL Studio21最新中文版下载及切换语言教程
  4. LATTICE的FPGA加密下载
  5. 2021年终总结2022年度展望
  6. 关于市级资助系统资助学生签名上传方法
  7. 求职面试算法总结(感谢用心整理的小伙伴)
  8. 水利自控翻板闸门滚轮连杆式翻板闸门液压比例阀控制器
  9. vue.2.4.0.js_YouZan的Vue.js 2.0移动用户界面
  10. 数据治理:数据集成的关键技术