将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法
将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,就选择以下方法。
- 添加依赖
https://github.com/yanzhenjie/AndServer 参考官方说明
- 将打包出来的h5的整个文件夹,放在Android工程的
assets
文件夹中 - 添加配置代码:
@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"
}*/
- 启动本地服务
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 显示的两种方法相关推荐
- 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
这篇文章转自博客园 Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putPa ...
- android判断应用是否回到桌面的两种方法
有时候需要判断APP是否被切换到后台,然后做相应处理,如显示悬浮窗等.怎么判断呢,有两种方法: 第一种: /*** 判断当前界面是否是桌面*/private boolean isHome() {Str ...
- android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...
Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者 ...
- Android获取的状态栏高度,Android中获取状态栏高度的两种方法分享
前言 最近在做一个关于FAB的功能的时候需要获取状态栏的高度,在网上查了很多种方法,下面是选出的比较合理的两个方法.主要参考stackoverflow的这篇问答:http://stackoverflo ...
- Java/Android中汉字转拼音的两种方法,优劣比较
一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...
- Android中汉字转拼音的两种方法,优劣比较
一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...
- Android studio中TextView改变字体的两种方式(如仿宋、隶书)
在Android中系统默认的字体有三种,通过在TextView中加上android:typeface="sans"来改变,而sans就是三种当中的其中的一种,还有两种分别是&quo ...
- android 强制全屏,[Android]设置Activity为全屏显示的两种方法
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android :style/Theme.NoTitleBar.Ful ...
最新文章
- 3、(小数类型)FLOAT、DOUBLE、DECIMAL
- 使用之location和rewrite用法
- 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)
- XML文档处理(树的应用)
- mysql-电商库演练1-创建数据-基本查询练习
- WIN7 X64 如何删除计算机管理里面一些无效的服务
- Linux shell脚本详解及实战(一)——shell简介、shell变量及脚本规范
- neo4j安装与示例
- JavaScript parseInt() toString()函数
- mysql中url的格式_MySQL JDBC URL中的格式以及参数介绍
- tushare平台介绍
- 实现数据库版的图书管理系统
- 华为自研OS操作系统,今秋是否真的会面市?
- Word 如何取消自动编号
- ts快捷键 vscode_vscode这篇就够了
- 信而泰ALPS 用户管理——网络测试仪实操
- 基于IE内核的一个WEB打印实现方案
- Python爬虫之js加密破解,抓取网易云音乐评论生成词云
- 华为5g鸿蒙麒麟,华为5G手机渲染图曝光,鸿蒙+麒麟985+5G基带,参考价格很良心...
- 图像处理---HSV变换