watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VuY2hhbzEyNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

开篇

最近一直在为插件式开发而不断探询。对于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开发构想,全部资料均来源于网络。

前人的研究成果

假设想对支付宝钱包有一些了解能够參考网上的几篇文章。分析支付宝client的插件机制浅析支付宝钱包插件再谈支付宝钱包插件和说好的
Demo
 网上另一篇支付宝钱包的文章PhoneGap版支付宝Androidclient开发小结,从内容看应该是内部开发者的总结,对于微信资料则少之又少。我们要谈的不是开放平台,我事实上特想知道他们的开发思路,当然这是商业机密,我仅仅好从现有的表象中去探寻了一点痕迹了。

先谈微信的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的开发方式了。至于什么时候会大面积的颠覆。预计还得看网络带宽的进一步提高和资费的进一步减少,手机的硬件升级难度已经越来越大,后期的目标应该是在软件的体验和服务上。

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

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

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

    /* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: minzhenfei@163.com */ 背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是 ...

  2. 微信公众号中的支付宝支付与微信支付 && 支付宝支付问题(微信bug)

    一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...

  3. [转载]支付宝钱包手势密码破解实战(root过的手机可直接绕过手势密码)

    /* *转自http://blog.csdn.net/hu3167343/article/details/36418063 *本文章由 莫灰灰 编写,转载请注明出处. *作者:莫灰灰    邮箱: m ...

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

    近期客户提出要开发一个IOS上的app作为訪问他们站点的途径之中的一个.为什么说之中的一个呢.因为眼下PC和Mobile这两个站眼下都已经上线了. 所以问题就简单了,我们仅仅须要把mobile站UI改 ...

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

    /* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: minzhenfei@163.com */ 背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是 ...

  6. 集成支付宝钱包支付iOS SDK的方法与经验

    流程 摘自第一个文档<支付宝钱包支付接口开发包2.0标准版.pdf> 图中的“商户客户端”就是我们的iOS客户端需要做的事情: 调用支付宝支付接口 处理支付宝返回的支付结果 在调用支付宝支 ...

  7. ios--集成支付宝钱包支付iOS SDK的方法与经验

    文/胖花花(简书作者)原文链接:http://www.jianshu.com/p/fe56e122663e著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 没想到,支付宝的SDK是我目前 ...

  8. 集成支付宝钱包支付ios SDK的方法和经验

    没想到,支付宝的SDK是我目前用过的所有第三方SDK中最难用的一个了. 下载 首先,你要想找到这个SDK,都得费点功夫.现在的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 “请点此下载集成开 ...

  9. Android 支付宝钱包手势password裂纹战斗

    底 随着移动互联网和手机屏幕越做越大的普及等..购物在移动设备上.消费是必不可少的人们习惯于生活. 随着这股浪潮的兴起,安全.便捷的移动支付的需求也越来越大.故,各大互联网公司纷纷推出了移动支付平台. ...

随机推荐

  1. BZOJ 2969 期望

    思路: 我们可以分开算每个格子自己的期望啊... 期望可以累加的 那就把这个大格子 分成 9个部分 分别算好了... //By SiriusRen #include <cmath> #in ...

  2. Oracle快速收集AWR的方案

    记一种方便的awr收集方法,该脚本可以按小时收集目标时段的awr 素材:awr_generate.sql(具体脚本内容请见本文末尾) (1)将awr_generate.sql置于数据库服务器本地路径, ...

  3. Android 使用SQLite存储以及读取Drawable对象

    在进行Android开发过程中,我们经常会接触到Drawable对象,那么,若要使用数据库来进行存储及读取,该如何实现? 一.存储 //第一步,将Drawable对象转化为Bitmap对象 Bitma ...

  4. VM虚拟机中Ubuntu中执行apt-get update失败的解决方法(可能有效)

    首先确保虚拟机是连接网络的,可以用ping命令检测一下看是否连通网络.采用nat网络的时候确保服务是开的. 如果之前执行过apt-get update命令但是失败了,执行一下      rm -rf ...

  5. openstack--memecache

    一.缓存系统 静态web页面: 1.工作流程: 在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Reques ...

  6. 移动APP 微信支付完整过程(wxPay 方案一)

    apicloud.weixinpay官方提供了两种方案. 本模块封装了两套支付方案: 方案一:开发者通过 getOrderId.payOrder 自己处理签名过程(微信开放平台建议把 getOrder ...

  7. BZOJ 1864: [Zjoi2006]三色二叉树 树形DP + 读入

    Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. 题解:本题大水 ...

  8. 【转载】JSTL和EL的使用

    使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL标签库 在JSTL中分为以下五个标签 核心标签 格式化标签 SQL标签 ...

  9. 基于MATLAB的多功能语音处理器

    一.设计功能 录制音频,保存音频 对录制的语音信号进行频谱分析,确定该段语音的主要频率范围: 利用采样定理,对该段语音信号进行采样,观察不用采样频率(过采样.欠采样.临界采样)对信号的影响: 实现语音 ...

  10. eas之怎么设置单据保存或者提交完不跳到下个新增页面

    this.chkMenuItemSubmitAndAddNew.setSelected(false);