浅析hybrid模式下地支付宝钱包和微信

开篇

近期一直在为插件式开发而不断探询,对于android端已经有一套插件式开发的框架,有通过java的反射机制实现的plugin,但目前我还没有找到一套完整的开源的框架,后期继续寻找。而对于iOS端,由于object-c没有java的反射机制,于是就想到了动态加载的方式,而网友们发现苹果公司禁止开发者使用动态库,而只允许使用静态库,所以使用加载动态库的方式目前是行不通了。

那现在就剩下两条路,就是采用webapp开发和hybrid模式,对于webapp,现在也是许多人探索的道路了,这种方式的好处和劣势也是相当明显,好处是可以实现跨平台,iOS,android,windowsphone都可以使用,移植性好;不好的地方就是对于目前普遍的3G和4G网络来说,耗费流量也是一个大问题,还有就是在体验上比不了native的快速。不过按照PC端发展和通讯网络的趋势和,webapp是未来的大方向。

而hybrid模式就是目前native和webapp之间的一种过渡方式了,采用h5和native相结合的模式,目前已经有相当成熟的发展了,阿里巴巴和腾讯都有自己的一套框架,而网络上也有组织开源了这方面的源码,像phonegap和cordva就是早期的践行者,现在也有不少公司推出了商业版,具体可以到网络上搜寻,今天我要记录的就是我在研究支付宝钱包和微信的hybird开发构想,所有资料均来源于网络。

前人的研究成果

如果想对支付宝钱包有一些了解可以参考网上的几篇文章,分析支付宝客户端的插件机制浅析支付宝钱包插件再谈支付宝钱包插件和说好的
Demo
 网上还有一篇支付宝钱包的文章PhoneGap版支付宝Android客户端开发小结,从内容看应该是内部开发人员的总结,对于微信资料则少之又少,我们要谈的不是开放平台,我其实特想知道他们的开发思路,当然这是商业机密,我只好从现有的表象中去探寻了一点痕迹了。

先谈微信的android版吧,反编译的结果令人失望,腾讯已经对代码作了混淆等针对反编译而进行的防护措施,没有多少可用价值,不过有一个文件还是非常有价值的,那就是wxjs.js,关于这个javascript的发现和研究有人比我要早,大家可以去这里查看WeixinApi,DarkAbyss也写了一篇介绍 weixinJSBridge的介绍,iOS包里的wxjs.js是经过压缩过得,所以看的很吃力,由于所获信息有限,对微信的研究也就只能先进行到这里,期待着其他大牛能够继续努力了。

支付宝钱包前面已经有大牛尝试过分析,但是我还是对bybird模式不是特别清楚,phonegap的源码也有,但是对于长篇大论我向来没有兴趣,而国内介绍的文章大多是转帖几个大牛的文章,而大牛向来不拘小节,只介绍自己感兴趣的,无关的细节则忽略不计,想来这也是大牛不屑于重复别人的构想吧。加上我英文阅读能力有限,只能在茫茫大海似的网络中继续搜寻了。

hybrid插件

通过对支付宝钱包和微信android端的反编译,发现里面有一些.so文件,在iOS端,微信内部没有发现.so文件,而在支付宝钱包内部,却又一些以.amr,前面有人已经指出,这些其实也是.zip文件,只是为了混淆一下作的掩饰,解压缩之后,里面其实一堆html,js和css的文件,那么我的疑问是app如何加载这些文件内,当然是用webview来加载,但是我的疑问是,app是解压之后的加载,还是在不解压的情况下进行加载,如果解压又解压到哪里,而iOS是不允许解压到MainBundle中的,这个我有做过尝试(模拟器中可以,但是真机上却行不通,我试验的是xcode6,ios8.1,而网络资料显示,苹果这个版本又对app文件目录作了较大的调整),如果解压到Document目录则没有问题。那么我猜想的一种情况是,app在需要的事后将文件解压到其他目录,然后再进行加载,这个过程当然可以通过配置文件控制。那么更大胆的一点想法是类似于Bundle方式,可以直接加载.amr里面的内容。但是我在网上没有找到这方面的资料。如果谁有资料可以发我一些。小弟感激不尽。

再进入到支付宝钱包的.amr内部,发现里面采用的一些webapp框架不像是一个团队开发,很像是几个不同的团队(或人)的作品,因为里面的风格各不相同,不过他们共同使用了zepto.js和sea.js,zepto.js是手机端的jquery,其宗旨就是追求jquery的功能,但是又不使文件过大,简言之就是麻雀虽小五脏俱全,而sea.js则是提供js的模块化开发。当然除了上面两个基本js框架之外,还有其他常用的js框架,比如scroll.js,json.js,fastclick.js等框架。当然在里面也发现了淘宝前端开发组的arale框架,我想阿里现在的研发团队非常多,同一个问题好几个团队在研究,也有好几套方案,这样做虽然说耗费人力,但是可以有效防止因为某一套框架的漏洞而导致整个app的crash,其实最终还会只有一两个的,只是这一两个一定是存优去劣而成的集大成者。

由于在微信上没有什么发现,我也没有去研究腾讯其他的app了,但是也发现腾讯前端也有自己的一套移动web框架了,叫spirit,有兴趣可以自己去了解一下。可见在开源的道路上,阿里比腾讯走的要远。希望企鹅帝国除了赚钱之余,也能够和大家分享一下自己的研究成果,带领中国广大开发者一起成长进步。

继续的远征

如果想要继续深入的了解hybrid编程,希望有一个简短易明的demo那岂不很好,最后终于在github上找到了,牛人早已造好车轮,只是我还来不及发现而已,WebViewJavascriptBridge,这是这对iOS和OSX而设计的object-c和javascript通讯框架,已经有好些公司采用这一套了,包括Facebook
Messager和Facebook Paper,若问我是怎么知道,那就得问问大牛了。

通过对该份源码的分析,发现其设计之巧妙令人心生佩服,再回来想想支付宝钱包和微信,他们应该都有借鉴这里的设计,然后进行了各自的扩展,我们有人找到了微信的wxjs.js,但是还没有找到alipaybridge.js的源码不知支付宝钱包放到哪里了,或许它的文件不叫这个名字,有时间慢慢找吧。

看完是不是感觉,初极狭,才通人,复行数十步,豁然开朗的感觉,这份源码已经将框架写的很清晰明白了,已经是不需要再多言了,任何的修饰都是累赘了。

未来的构想

看完之后,发现对于iOS和andorid的开发人员而言,javascript已经是不可忽视的语言了,而且其开发分量将举足轻重,三星的Tizen就尝试了h5+js+css的方式来构建移动app,加上近期微软与Apache
Cordova合作,推出的visual studio开始集成支持cordova来开发iOS、android、windowsphone的app,跨平台的壁垒似乎就要被打破了,相信在不久的将来会有更多地javascript人员加入到app的开发队伍中来。

既然hybrid模式是一个过渡阶段的产物,联想到PC端软件的发展过程,手机端最终的模式应该就是完全的h5的开发方式了,至于什么时候会大面积的颠覆,估计还得看网络带宽的进一步提高和资费的进一步降低,手机的硬件升级难度已经越来越大,后期的目标应该是在软件的体验和服务上。

写了这么多,也只是把我自己探索的一个过程整理了出来,后期会继续研究,希望对其他人也有所帮助,如有疏漏,还往大牛赐教。欢迎到我的主页留言。

时间: 2024-10-24 07:52:05

浅析hybrid模式下地支付宝钱包和微信的相关文章

微信支付与支付宝钱包的竞争分析

NO1: 十九世纪七十年代起,“物竞天择,适者生存,优胜劣汰”已逐渐成为现代生物学的口号.而今,不知不觉中,它似乎也成了当代社会学的口号.罗素说:“竞争一直是,甚至从人类起源起就是对大部分激烈活动的剌激物.”所谓“长江后浪推前浪”,在人类资讯的迅速积累之下,如果不能追上时代,自然就要被淘汰了.竞争,已经成了当代社会政治经济发展的重要基础与必然趋势. 从远古时期的以物换物,到后来货币的出现,直到宋朝时第一张纸币“交子”问世,随着经济的不断发展,货币的形式也在不断地变化着. 2003年10月18日,

微信与支付宝钱包的竞争分析

五年前,中国的商户普遍没有移动支付的概念,但是五年后,移动支付已经在中国的大地上遍地开花.2015年中国网民经常使用的支付方式中       ,第三方移动支付和第三方互联网支付占比分别排在第一第二位,为27 .1%和25.4%,进一步显示出第三方支付将会越来越受欢迎的趋势.那我们就来细数一下,微信与支付宝作为最受欢迎的第三方在这几年的发展史. 支付宝是2004年建立的,其主要提供支付及理财服务,在支付宝刚诞生的时代里,网络购物远没有线下实体店的营业额多,好在有淘宝这个刚需用户,支付宝发展的也不温

转 最全最强解析:支付宝钱包系统架构内部剖析(架构图)

原文: 最全最强解析:支付宝钱包系统架构内部剖析(架构图) 2015/06/05 支付宝系统架构概况 典型处理默认 资金处理平台 财务会计 支付清算 核算中心 交易 柔性事务 支付宝的开源分布式消息中间件–Metamorphosis(MetaQ) Metamorphosis (MetaQ) 是一个高性能.高可用.可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写.吞吐量大和支持本地和XA事务等特性,适用 于大吞吐量.顺序消息.广播和日志数据传输等场景,在淘宝和支付宝

支付宝钱包手势密码破解实战

背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是人们不可或缺的一个生活习惯了.随着这股浪潮的兴起,安全.便捷的移动支付需求也越来越大.因此,各大互联网公司纷纷推出了其移动支付平台.其中,用的比较多的要数腾讯的微信和阿里的支付宝钱包了.就我而言,平时和同事一起出去AA吃饭,下班回家打车等日常生活都已经离不开这两个支付平台了. 正所谓树大招风,移动支付平台的兴起,也给众多一直徘徊在网络阴暗地带的黑客们又一次重生的机会.因为移动平台刚刚兴起,人们对移动平台的安全认识度还

支付宝移动支付之IOSApp调用支付宝钱包

最近客户提出要开发一个IOS上的app作为访问他们网站的途径之一,为什么说之一呢,因为目前PC和Mobile这两个站目前都已经上线了. 所以问题就简单了,我们只需要把mobile站UI修改一下,然后在根据客户的新需求修改下程序,之后把这个站套个IOS的壳子就可以了. 那么问题来了,我们的mobile支付的时候调用的是支付宝的网页支付,这个页面是支付宝的,我们没办法修改,所以如果套在壳子里继续使用这种支付方式会有点不伦不类的感觉,所以我们就决定调用支付宝钱包,也就是支付宝客户端. 下面是我参考支付

微信公众号中的支付宝支付与微信支付

一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端在这方面,包括微信授权登陆这一块需要做的都不是很多,而主要的工作量都在后端部分. 支付宝支付 无论是支付宝支付还是微信支付,最开始的步骤当然是将商品列表.商家相关信息.用户remark.运费.总价等等支付需要的信息通过post请求向后端传递,这里介绍支付宝支付,所以假设用户选择的是支付宝支付,那么后

支付宝钱包手势密码破解实战(root过的手机可直接绕过手势密码)

/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: [email protected] */ 背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是人们不可或缺的一个生活习惯了.随着这股浪潮的兴起,安全.便捷的移动支付需求也越来越大.因此,各大互联网公司纷纷推出了其移动支付平台.其中,用的比较多的要数腾讯的微信和阿里的支付宝钱包了.就我而言,平时和同事一起出去AA吃饭,下班回家打车等日常生活都已经离不开这两个支付平台了. 正所谓树大招风,移动支付

支付宝钱包手势password破解实战(root过的手机可直接绕过手势password)

/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: [email protected] */ 背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是人们不可或缺的一个生活习惯了.随着这股浪潮的兴起,安全.便捷的移动支付需求也越来越大.因此,各大互联网公司纷纷推出了其移动支付平台.当中,用的比較多的要数腾讯的微信和阿里的支付宝钱包了. 就我而言,平时和同事一起出去AA吃饭.下班回家打车等日常生活都已经离不开这两个支付平台了. 正所谓树大招风,移动支

支付宝钱包系统架构内部

支付宝钱包系统架构内部剖析(架构图) 支付宝系统架构概况 <img class="aligncenter size-full wp-image-160824" src="http://image.woshipm.com/wp-files/2015/06/QQ20150605112628.png" alt="QQ20150605112628" width="592" height="444" /