阅读理解

移动应用框架分析

2018-01-30  本文已影响137人  Untils

前言

Hybrid App:PhoneGap、Titanium、WeX5、AppCan...

优于Hybrid App:React native、Weex……

Native APP: 原生应用

!!!重点!!!

Hera 当下、未来的技术方向:https://github.com/weidian-inc/hera/projects/1?

Android实现原理:Native层[HeraActivity]作为逻辑流程控制中心,建立了页面视图层[Page]与AppService应用逻辑层[AppService]之间的联系,处理两层之间的事件传递及数据流转,同时也处理API的调用并返回结果

SDK本身提供了丰富的API实现,同时也提供了扩展API的接口,方便被接入的App实现自定义的API功能。由于SDK运行于独立进程,因此通过进程通信的方式调用宿主提供的扩展API。SdkApiManager和HostApiManager分别对应SDK内部API的管理和扩展API的管理。

iOS实现原理:SDK Native层WDHManager作为逻辑流程控制中心,建立了页面视图层Page与应用逻辑层WDHService之间的联系,处理两层之间的事件传递及数据流转,同时也处理API的调用并返回结果。

SDK本身提供了丰富的api实现,同时也提供了扩展api的接口,方便被接入的App实现自定义的API功能。WHHybridExtension负责API的调配与扩

正文

学习以上任何框架最好有以下基础(Html + css + js):https://www.w3cschool.cn/javascript/js-tutorial.html

例如:做React native 两端(iOS android)通用的代码需要很深厚的Html + css + js功底,但是同样,既然要求同必然会涉及存异,做两端通用设计初期需要做部分过桥文件的编写。这就涉及到了android过桥文件、objective-c/swfit过桥文件编写。 React Native 的代码只兼容两个平台(iOS 和 Android),并没有兼容 Web 端访问。这里是因为 Facebook 开发人员认为 Web 端天生兼容性就巨麻烦,而且平台差异性是注定存在而且也要保留的,所以 React Native 的目标是 Learn once, write anywhere ,而不是 Write once, run anywhere 。

综上要做iOS、Android以及Web的三端一套。1.创业公司首推Hera(成本小、受限制大)2.有实力的公司可以尝试在react-native 上做做文章。

无论基于何种框架都是存在优劣的。我门该如何选择?我给出的建议是若要做三端一套的框架选型暂时首推React-native 。人手配备标准为:精通objective-c/swfit + js 1人     精通android+js 1人   统筹框架难点、通信分工 1人  功能开发(Html + css + js ) 3-4人。其成本并不低于原平台代码开发人员。故而我个人建议移动端的框架选型面向的其实是用户,而不是公司的发展。能在其中节约人力和财力固然对公司是好的。但并不是所有的公司都有精力、时间去做这样的转型。但!无论何种代码的编写都要有迭代、更新、重构。这也就存在一个血淋淋的事实。程序员永远都到写代码!故而以上因素永远都在影响着公司管理层的人员对框架选型骚动。选型选什么不重要,重要的是适合公司当前、以后阶段业务发展的良性循环才是最重要的、也是最明智的。

对原安卓开发人员转型建议(iOS同理):

1.1. 基本

搭架子 

1. 目前以多Tab + Fragment为主,已成型; 

2. 项目结构

异步加载图片 – UIL,Glide

网络请求 – robospice + google http client

Json – jackson2

缓存机制 – robospice

自动更新 – lesscode

事件通信 – event bus, otto

数据库 – litepal

内存检测 – leakcanary

其他各种UI和功能类库

1.2. 服务

统计服务 – 友盟、百度

云存储服务 – 七牛

推送服务 – 极光,个推,小米

支付服务 – 支付宝、微信、银联、连连支付、现在支付、充话费、语音支付等

分享 – share sdk

第三方登录 – 各大开放平台sdk

1.3. 工程

多渠道打包 – gradle flavor

持续集成 – jenkins

APK瘦身 – Proguard, AndResGuard, webp等

2. 持续优化的重要性

把一个项目做到可以满足需求的基本运行,对于开发者开说,说明你成功了,但是只是第一阶段的成功:实现。

接下来你要面临的问题,很有可能会是一大波新的变化需求,代码混乱,性能低下,错误异常率下不来等等,这就需要:优化,并且是持续的优化。

持续的优化,不仅能解决很多问题,而且能保证代码有效健壮的发展,这对开发者来说,尤为重要,谁都喜欢写更好的代码,都不喜欢改那些乱到掉渣的代码。

做项目评估的时候,考虑一下基本优化的工作量;迭代版本的时候,留一定的持续优化的工作量。

3. 困难挫折警示

经常碰到困难,经常被技术问题卡住,经常粗心大意 … …

说明什么?

要么太没经验,要么能力不足。

我们可以从多个方面着手拓展技术视野、提高动手能力、优化放错机制等等:

关注社区动向

官方资讯,github, 技术博客(国内外),视频(慕课网、极客学院等)… …

勤于实践

把别人的一些好的经验或者效果,动手实现,转化为自己的经验,甚至进一步升华成更好的成果。

多参与项目

珍惜参加项目的机会,多参与,用行动改进,不做旁观者。

善假于物

多学习一些工具git,linux,python,tcpdump等等,用的比较多的,最好能吃透一点(比如git),小工具,大用处。

细节决定成败

成也细节,败也细节。会区分同类的不同点,能从小的地方改进,遇到困难沉着应付一个一个的攻克细节…

上一篇 下一篇

猜你喜欢

热点阅读