笔记(十九)——安卓混合开发技术点

——个人平时笔记,看到的同学欢迎指正错误,文中多处摘录于各大博主与书
籍精华

一、混合开发几款移动跨平台App开发框架比较

1.PhoneGAP
2.Cordova
3.Dcloud
4.APICloud
5.APPCan
6.Lonic
主流的:Ionic、React Native
非主流:AppCan、Jquery Mobile(主要用于做移动Web)

二、移动跨平台方案

image.png

移动开发10年历程
React Native、weex、Flutter
1.Hybrid开发(H5+原生混合)——使用webview渲染
使用安卓WebView或者iOS的WKWebView来加载H5网页的方式实现。通过JsBridge接口的方式与原生通讯。

2.React Native框架和阿里Weex——映射为原生控件渲染
界面DOM树UI会通过JavaScriptCore映射为原生控件树去渲染

  • React Native是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。
  • 阿里Weex框架能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。

3.Flutter框架——调用系统API渲染
Flutter是谷歌的移动UI框架,使用Dart语言开发,可以快速在iOS和Android上构建高质量的原生用户界面。使用自绘引擎,自绘引擎是直接调用系统API来绘制UI的。 Flutter可以与现有的代码一起工作。

android_跨平台.png

4.从本质上来讲,React Native 和 Weex 可以算作 Hybrid 的方案。把它们和 Cordova 纯 HTML 开发的 App 进行对比的原因,是因为 React Native 和 Weex 都支持将资源文件(例如 HTML、CSS 或 JS)打包到 App 进行发布。

5.RN 和 Weex 的原理都是在 iOS 或者 Android 操作系统上利用 JavaScript 引擎进行 Bundle 的解析,利用操作系统原生的 UI 框架进行渲染的。这种方案解决了 Hybrid 性能的不足,也提供了动态化和网页开发的体验。

6.Flutter 之所以受到如此多的关注是因为它与之前的 Hybrid、React Native、Weex 有着很大的不同。

首先第一点,也是最本质的区别:Flutter 使用自己的绘制引擎开发,系统级 API 进行渲染,新的一套跨平台ui框架,客户端仅需要提供一块画布就可以支持应用展示。这一点使其脱离了原生的渲染,让我们可以获得高度一致的渲染体现。除了一致性以外,Flutter 大量利用了 GPU 绘制的 Skia 图形引擎,在渲染速度和动画效果上都给出了更有体验。

其次是开发的效率和开发的生态环境,Flutter 从一开始就很关注开发的效率,利用 Hot-Reload 的亚秒级刷新能力开发人员可以非常快速的进行调试和开发,也能随时查看编写代码呈现的效果。另外 Flutter 采用 Dart 语言进行开发,Dart 语言兼有 JIT 和 AOT 两种运行模式,既可以保证开发模式下快速的部署和调试,也可以保证产品模式下高速的运行。Dart 语言易学易用,可以很方便的从 Java、Objective-C、JavaScript 等语言迁移过来。

  • Flutter 下层使用 C / C++ 编写的 Framework,上层用 Dart 进行视图和功能组件的搭建
  • 自绘引擎解决的是UI的跨平台问题,如果涉及其它系统能力调用,依然要涉及原生开发。
  • Flutter与原生安卓交互有三种方法,分别是MethodChannel,EventChannel与BasicMessageChannel。与ios也是类似。


    image.png

    image.png

    image.png

三、Hybrid 混合开发问题

1.在webview与java交互中,只有Android 4.2,API 17开始只有被@JavascriptInterface 注解标识的公有方法可以被JS代码安全访问,才能不被拦截后反射调用。
2.在webview与java交互中,如何保持与http请求同步?

  • session技术则是服务端的解决方案。在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了。
    由此我们可以得出,session是解决http协议无状态问题的服务端解决方案,它能让客户端和服务端一系列交互动作变成一个完整的事务,能使网站变成一个真正意义上的软件。
  • cookie技术是客户端的解决方案。浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);
  • cookie和session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,上面我讲到服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用(注意:有些资料说ASP解决这个问题,当浏览器的cookie被禁掉,服务端的session任然可以正常使用,ASP我没试验过,但是对于网络上很多用php和jsp编写的网站,我发现禁掉cookie,网站的session都无法正常的访问)
  • 最终解决方案,通过CookieManager 管理webview,服务端返回的sessionId是存储在cookies中,httpclient登录到服务器的时候,从http的cookie中取出sessionId放入到webview中(同步cookie,cookie信息保存在请求头发送到后端服务),webview访问业务的时候,由于sessionId一致,服务器会认为该用户已登录。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容