android混合开发,html5自己主动更新爬过的坑

clnchanpin      2022-02-09     471

关键词:

如今使用混合开发的公司越来越多,尽管出现了一些新技术,比方Facebook的react native、阿里的weex,但依旧阻挡不了一些公司採用h5的决心。当然,这也是从多方面考虑的选择。

在三年前就使用过html5混合开发,当时做的是一款贵金属软件,涨跌五线谱、乾坤交易,还有各个股市的信息,那时候还是上波牛市爆发的前夕,哎。。。

近期公司让用h5混合开发。一些页面和功能有h5分担,最初时候放在本地assets目录下,后来因为前端同事频繁改动和更新。再加上数据安全方面考虑,决定把包放在server。採用接口返回字段,推断是否须要下载更新。接下来就谈下开发中遇到的几个坑。给自己做个笔记,也分享给须要的朋友。

首坑:Android系统

对于h5的混合开发,Android系统就是个大坑,三年前接入h5点时候,那时候好多手机卡的跟ppt似的,4.0后Google进行了一些优化,效率上确实好了非常多。但后面又来了一系列巨坑。比方4.3之前一个内核,4.3一个单独内核,4.3之后又是一个内核,原生的WebView没法做到总体兼容,最后採取了一个方案。使用大企鹅的x5内核,长处例如以下:

  1. 里面类名和方法名,和原生的名称差点儿是一样的,使用更方便
  2. QQ和微信都是採用x5内核,内核共享。不须要单独下载
  3. 兼容性相对较好

二坑:DownloadManager。

最初的方案是採用系统下类DownloadManager,既然是系统提供的,非常多码友肯定认为非常OK的。可是爆破部队瞎搞,三星的手机系统却把DownloadManager的api删了。这尼玛就恶心了,你还是继续玩爆炸吧。。。

三坑:webview载入不显示

之前放在assets的时候。页面显示的非常6,换成下载到本地读取,竟然不显示了,打印下路径,没问题。那就能够确定问题出在了载入过程了。查了下资料发现。能够是用loadData。这样的方法须要先将html文件读取出来。以字符串传入loadData,能够展示页面,可是不会引用css、js等文件。也能够使用loadUrl。只是须要注意,这里因为是使用本地数据,所以传入的url须要做些处理,比如:

  1. 假设html文件存于assets:则加前缀:file:///android_asset/
  2. 假设html文件存于sdcard:则加前缀:content://com.android.htmlfileprovider/sdcard/

PS:content前缀可能导致异常,直接使用file:///sdcard/ 或者 file:/sdcard也能够

四坑:特殊字符的转义

有一个页面。iOS同事那边一直显示正常,Android这边怎么都出不来,相同页面不同数据的页面就显示页面。当时就认为非常奇怪,不应该是h5点问题。要不iOS也不会显示,打印了URL一看,擦,URL中有一个”%”,转义后便OK了。当然,依据须要另一些特殊字符也须要转义。”%”仅仅是一个个例。

五坑:部分手机报错不显示

A WebView method was called on thread ‘JavaBridge’. All WebView methods must be called on the same thread。

这是因为部分手机WebView中方法必须在同一个线程。通过打印Thread.currentThread()便知不属于同一个线程。解决方式:

mWebView.post(new Runnable() {
                @Override
                public void run() {
                    mWebView.loadUrl("javascript:" + data);
                }
            });

代码还未从公司项目中剥离,眼下不上传了,如有错误或者补充,多多不吝赐教。

apicloud模块开发爬过的坑(集成openinstall基于个性化安装的渠道统计服务)(代码片段)

引子:现在很多的app都用混合开发,apicloud的app混合开发也是很火。很多时候需要集成一下第三方的sdk服务,比如:openisntall的统计服务等。那么如何编写一个模块开发呢,apicloud文档写的也是模棱两可,期间也爬过很多的坑,在... 查看详情

html5移动端布局实战开发课程

...是未来很多企业用人趋势!HTML5工程师在今后的工作中与Android、iOS工程师对接的几率非常大。混合式开发思想培训出来的学员比单一课程学员薪水高至少2000元,同时企业也更愿意去花更多的钱来聘请那些了解比较全面的开发人... 查看详情

windows程序设计——飞机大战笔记(解决输入混合password账户,结局自己主动记录数据)

////////////////////2015/07/23///////////////////////////////////////byxbw///////////////////////////////////////////////环境VS2013///////////////问题又攻克了,攻克了登陆仅仅能用数字登陆的问题。还有自己主动记录数据的问题。。这个仅仅能用数字登陆是... 查看详情

浅谈混合开发与android,js数据交互

本文是作者原创,如转载请注明出处!一.概论现在时代已经走过了移动互联网的超级火爆阶段,市场上移动开发人员已经趋于饱和,显然,只会原生APP的开发已不能满足市场的需求,随着H5的兴起与火爆,H5在原生APP中的使用越来越广泛,... 查看详情

混合开发

混合开发HybridAPP 小杂种APP,混合APP 对比现在流行的三种APP:WebAPP,NativeAPP,HybridAPP WebAPP:*不需要下载安装,通过移动端浏览器来访问*HTML5+CSS3+JS;Web前端开发人员*开发成本低,更新维护迭代成本也很低,使用成本低,... 查看详情

为啥移动开发开始用混合app开发na

...本低的基因,又能发挥NativeApp体验和性能的优势,HybridApp混合式移动应用开发逐渐成为企业移动开发的首选。    NativeApp:疲惫  首先NativeApp开发、更新、维护的周期太长,企业移动信息化大都处于尝试和摸索期,企业需... 查看详情

混合开发架构|android工程集成reactnativeflutterreactjs(代码片段)

混合开发架构|Android工程集成ReactNative、Flutter、ReactJs架构设计说明创建安卓原生工程创建Flutter集成嵌入原生工程创建ReactNative解决RN报错问题集成嵌入原生工程RN集成后,启动报错底部导航栏架构设计原生仿招商银行首页原生... 查看详情

app原生开发与混合开发是啥意思

...优缺点:优点是:1、开发效率高,节约时间同一套代码Android和IOS基本都可用2、更新和部署比较方便,不需要每次升级都要上传到AppStore进行审核了,只需要在服务器端升级就可以3、代码维护方便、版本更新快,降低产品成本缺... 查看详情

2018学习之混合开发

混合开发HybridAPP小杂种APP,混合APP对比现在流行的三种APP:WebAPP,NativeAPP,HybridAPPWebAPP:不需要下载安装,通过移动端浏览器来访问HTML5+CSS3+JS;Web前端开发人员开发成本低,更新维护迭代成本也很低,使用成本低,跨平台较为依赖... 查看详情

自己主动更新--版本比較

版本比較在实现自己主动更新的时候,须要进行版本的比較。比如: 1.0.6 和1.0.7比較大小解决方式:将版本的字符串转换成整数来比較。步骤:1. 去除字符串中的小数点。(使用正則表達式)2. 比較两个字符串的... 查看详情

设计和开发一套简单自己主动化ui框架

!有兴趣的朋友请直接移步Github,本帖子已经不做更新,框架的详细的实现已经做了优化和代码整理,本文仅仅介绍了详细的设计思路!目标:编写一个简单通用UI框架用于管理页面和完毕导航跳转终于的实现效果请拉到最下方查... 查看详情

使用 HTML5 音频的无线电流混合 Android 应用程序的巨大延迟

】使用HTML5音频的无线电流混合Android应用程序的巨大延迟【英文标题】:HugedelayonaradiostreamhybridAndroidAppusingHTML5audio【发布时间】:2016-06-2603:43:15【问题描述】:我正在使用HTML5/JS开发一个在线广播流应用程序(用于特定广播电台... 查看详情

为啥国内突然冒出很多hybrid混合移动应用开发框架

...冒出很多Hybrid混合移动应用开发框架1、维护两套(IOS,Android,甚至是wp)应用太麻烦了,时间成本,人力成本相对混合框架来说太高2、对于小公司,并没有ios或者android程式设计师,但是web程式设计师肯定是有的。所以因为成本... 查看详情

基于反射实现自己主动化restful开发

[Author]:kwu 基于反射实现自己主动化restful开发,通用的仅仅须要写查询数据库的sql。并增加相应的javabean实现的高速restful服务的开发。1、编写数据库的查询sql。相应sql.propertiesdaily=DailyReport;selectt.day,t.cnt,t.typefrom(selectday,cnt,type... 查看详情

确保xcode每次build时都自己主动更新资源

參考:http://quick.cocoachina.com/?p=22刚建立的quickproject。每次修改lua代码,都得清理一下。非常麻烦。參照着quick官网上改了改,要适配自己的项目_TARGET_BUILD_CONTENTS_PATH=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATHecho_TARGET_BUILD_CONTENTS_PATH:$_T 查看详情

2月1日寒假总结

1.今天在b站上观看学习并搭建了android开发环境。2.学习了androidstudio的常规使用操作,学会了基本的使用。3.在csdn上面了解到了一些关于APP的知识:(1) 一个完整的app开发过程要经过合同的签订→项目启动→建立产品原... 查看详情

iOS/Android 上 HTML5 混合应用中持久存储的可靠方法

】iOS/Android上HTML5混合应用中持久存储的可靠方法【英文标题】:ReliablemethodforpersistentstorageinHTML5hybridapponiOS/Android【发布时间】:2014-04-3020:06:13【问题描述】:我和其他许多人一样,正在使用HTML5/Javascript和桥接器(Phonegap/IntelXDK... 查看详情

android开发学习之路-flutter混合开发实践(代码片段)

前言为了迎合新技术,并且可以一端开发两端受用,于是乎在引入新的功能模块的时候,尝鲜使用flutter来进行开发。众所周知,在尝鲜新技术的时候总会有种畏惧感,人类总是喜欢使用熟悉的东西,而作... 查看详情