关闭

Android混合开发,html5自动更新爬过的坑

标签: androidhtml5自动更新混合开发h5
5188人阅读 评论(0) 收藏 举报
分类:

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

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

最近公司让用h5混合开发,一些页面和功能有h5分担,最初时候放在本地assets文件夹下,后来由于前端同事频繁修改和更新,再加上数据安全方面考虑,决定把包放在服务器,采用接口返回字段,判断是否需要下载更新,接下来就谈下开发中遇到的几个坑,给自己做个笔记,也分享给需要的朋友。

首坑: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);
                }
            });

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

6
0
查看评论

Html5 + android原生 混合式开发(一)

Html5 + android原生 混合式开发
  • shenmafuyunnan
  • shenmafuyunnan
  • 2016-09-01 02:26
  • 12560

Android与Html5交互

Android与html5之间可以相互交互,即android中的类可以调用JavaScript中的函数,javascript可以调用android中的类的方法。 这个例子中,html5完成数据库的操作,包括数据库的创建、表的创建、数据的增删查改等,还有html5的定位功能。 先看效果图:...
  • qq_15807167
  • qq_15807167
  • 2016-06-21 09:26
  • 924

Android WebView的使用集锦(支持Html5)

转载地址:http://blog.csdn.net/gz_jero/article/details/53608701 WebView配置: WebSettings webSettings = webView.getSettings(); // 支持javascrip...
  • l_215851356
  • l_215851356
  • 2017-04-05 13:29
  • 944

安卓APP加载HTML5页面解决方案总结

由于H5页面在移动端的兼容性及扩展性方面体现出来的优势,又兼得APP中植入H5页面对应用的灵活性有大大的提升(如活动、游戏的更新等),APP开发不可避免的需要加载一些H5页面,但安卓客户端对网页内容的排版、整理、交互等可能会出现一些不可预料的问题。本文将对安卓端加载网页写一些比较通用,可能避免问题的...
  • zcchange1025
  • zcchange1025
  • 2015-12-02 23:54
  • 17881

android与html5交互

现在app中嵌套html5的用法相当的普及,但是对于她们之间的交互却又感到很模糊,接下来从两方面讲解一下,自己动手写就会明白很多。一、点击html5页面中的按钮,调用android中的方法1、android页面 webView = (WebView) findViewById(R.id.webvie...
  • hello_1s
  • hello_1s
  • 2016-10-14 18:46
  • 2569

android之基于html5快速开发新闻客户端

使用369平台使用Html5快速开发的新闻客户端,在这篇android之使用Html5开发的基础上。 apk:http://dev.369cloud.com/down/compile/1/14719
  • I_do_can
  • I_do_can
  • 2016-05-13 21:28
  • 2390

HTML5开发Android程序

初遇WeX5的看过来 针对刚接触WeX5的用户建议通过起步官方在百度传课及腾讯课堂发布的《H5 App开发 WeX5入门课程》视频教程,使用配套的教材及案例素材学习,全部免费, 新来的小伙伴都去报名学习了~ 下载配套资料 前往百度传课 前往腾讯课堂 产品下载 ...
  • boonya
  • boonya
  • 2016-07-22 16:59
  • 1847

Html5 + android原生 混合式开发(二)

仿网易新闻,android混合开发,html5
  • shenmafuyunnan
  • shenmafuyunnan
  • 2016-09-01 18:15
  • 2259

本地html文件放置位置,android中加载本地Html文件

最近因为忙着项目上线的事,完全把写博客的事给忘了,先给自己三个 存放本地html文件:放在app/src/main/assets目录下,一般来说android studio项目下是没有assets文件夹的,所以需要在app/src/main下新建一个文件夹,取名assets.如图:   &...
  • u011150924
  • u011150924
  • 2016-11-08 11:21
  • 18453

Android和HTML5混合开发

Android和HTML5混合开发,废话不多说开干: 下面HTML代码: hello world input{ width: 100%; margin: 20px; margin-right: 20px; height: 200px; font-size: 5...
  • qq_22863121
  • qq_22863121
  • 2016-11-05 12:57
  • 2420
    个人资料
    • 访问:264095次
    • 积分:3000
    • 等级:
    • 排名:第13879名
    • 原创:46篇
    • 转载:0篇
    • 译文:0篇
    • 评论:329条
    QQ交流群

    Android路上

    611566797
    博客专栏
    我的公众号