5

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

 3 years ago
source link: http://www.androidchina.net/6844.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Android混合开发,html5自动更新爬过的坑 – Android开发中文站
你的位置:Android开发中文站 > Android开发 > 开发进阶 > Android混合开发,html5自动更新爬过的坑

现在使用混合开发的公司越来越多,虽然出现了一些新技术,比如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了。当然,根据需要还有一些特殊字符也需要转义,”%”只是一个个例。

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

转载请注明:Android开发中文站 » Android混合开发,html5自动更新爬过的坑


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK