技匠志今日看点iOS 实用技术

2016MDCC移动开发者大会总结

2016-09-27  本文已影响2171人  ikook
中国移动开发者大会

2016.11.11更:

之前参加大会后视频没有马上放出来,所以今天给大家分享一下。本来以为参加会议之后视频很快就会出来的,没有想到出来的有点慢。不过,肯定比我分享出来的要早很多。因为这段时间学习的问题,所有时间不算很充裕,更新的有点迟了,抱歉。这也算是双十一的福利吧,哈哈。
说明一下,MDCC大会上分享经验的都是一些大牛,视频没有前后顺序之分,都值得一看。由于不知道的原因,Android开发者峰会的视频并没有全都放出来。我知道的都在这儿了。
Android开发者峰会:微信 Tinker 热补丁实践演进之路
Android开发者峰会:Fresco - loading images fast
Android开发者峰会:Android应用性能优化经验分享
Android开发者峰会:滴滴国际化 Android 端演进

======================================我是华丽的分割线===================================

9月22日,凌晨。托stormzhang张哥的洪福,有幸去参加2016MDCC移动开发者大会。在此特别感谢张哥,不然怎么可能有这样的机会去参加如此高逼格的会议啊。

因为路途遥远,要提前一天踏上旅程。

9月23日,上午全体大会。

分别由CSDN&极客帮创始人——蒋涛、微软亚洲研究院院长——刘振、京东技术副总裁——赵一鸿、图灵机器人CEO——俞志晨、360智能家居总裁、360车联网CEO——邓邱伟演讲,有幸见到各大科技公司的领军人物甚是激动。下面大体讲解一下他们各自的议题,不做深入讨论,主要还是要讨论Android开发峰会。

未来十年产业将进入 AIR 时代,即人工智能、IoT、AR时代。A时代的标志是AlphaGo,深度学习已彻底改变了图像识别领域;I时代的标志是软银收购ARM,2015年人均芯片拥有量为2颗,十年后将达到人均100颗;R时代的标志是PokeMon Go,且VR头显的销售会逐年呈指数式增长。

介绍在大数据的时代,分析已经成为商业成功的一个关键推动点。深厚的数学知识是人工智能的基础,海量的数据是建立良好模型的关键,然而这些构建分析所必需的条件却是大多数开发者所缺乏的。基于机器学习的人工智能和基于语境的人机交互已变为可能,刘震也结合微软认知服务的实际案例,从计算机视觉API、人脸识别API、情绪识别API、语言理解智能服务等方面多方位角度进行解读。
详情请访问:微软亚洲工程院院长刘震:智能应用的普及化

移动端的普及提升了碎片化时间的利用率,在家电、母婴、体育、超市方面京东移动的渗透率已近80%。这一背景下,数据的价值体现在洞察、决策、挖掘、开放,利用大数据去设计买点成为了重点。用户画像如何从静态变为动态,实现变化,是大数据的基本特点。他以“智能卖场”的例子从应用层面展示了动态数据的价值,通过京东大脑对用户行为、商品属性等大数据的挖掘,产生用户及商品画像,完成推荐预测,实现个性化选品和排序,能够有效地提升点击率和订单转化率,同时缩短用户购买路径。演讲主要围绕以下三个方面探讨:移动互联网对电商企业的挑战,移动电商的发展潜力,以及移动时代电商大数据的价值。
详情请访问:京东集团技术副总裁赵一鸿:移动时代的大数据电商技术探索与实践

他把智能机器人定义为:外在硬件载体+人工智能系统和应用。他指出机器人操作层、感知层、认知层分别对应人的四肢、五官和大脑的概念。今天,智能机器人产业硬件所需要的投入要大于软件,只有产生优秀的硬件载体软件才能有意义,这涉及到各位传感器和控制单元,但这一天屏正在慢慢开始平衡。

他认为现在智能硬件行业整体呈高速增长状态,2015年达到300%,巨头从各个链条进入布局;而产品现状仍处于初期,缺乏联通,资本快速进入押宝智能家居;人工智能应用实用性大幅提升;在服务上,线上渠道仍为主要购买途径,而第三方服务尚却未大规模介入产业链。
详情请访问:360智能家居总裁、360车联网CEO邓邱伟:智能硬件设计及关键实现技术
以上就是全体大会的大体内容了。

下午的技术专场说起来就有点遗憾了。

本人对新鲜事物比较好奇,尤其是好玩的东西,听起来比较高大上的东西。比如人工智能、深度学习。由于上午各位大佬们的演讲太过于精彩,让我对人工智能提起来很大的兴趣,有一种想要立马研究一下的冲动。所以就决定先放弃预先安排的去跨平台专场,而去人工智能与机器人专场听听。因为之前没有接触过人工智能,所以听起来简直比上高数课还难受,根本不知道说的什么,因为比较感兴趣所以想继续试着听下去。听了很久之后觉悟到还是去跨平台吧,那时候离下午专场的结束还有不到一个小时的时间。真是蛮遗憾的。

附上跨平台技术专场的PPT及Demo,大家自行研究。

MDCC 2016跨平台开发专场的演讲 PPT 以及 Demo

9月24日,终于到了拭目以待的Android开发峰会了,此次峰会可谓大神云集,往届肯定也是,不过我没有参加也没有关注,毕竟是才走入正途。

先附上一张议题和演讲嘉宾的表格

时间 议题
9:00 - 9:50 滴滴国际化 Android 端演进 吴更新 滴滴出行技术专家
9:50 - 10:40 回归初心,从容器化到组件化 冯森林 Android 独立开发者
10:40 - 11:30 云信 IM 推送保障及网络优化实践 周江华 网易云信 Android 端高级技术架构师
11:30 - 12:20 微信Tinker热补丁实践演进之路 张绍文 腾讯微信高级开发工程师
12:20 - 13:30 午休
13:30 - 14:20 Fresco - loading images fast 王洁(Jie Wang)Facebook Fresco team 软件工程师
14:20 - 15:10 如何开发一款优雅的 SDK? 吕观祥 个推移动研发部研发主管
15:10 - 16:00 打造可信赖的 Android 设备 ID 杨玉奇 数盟首席架构师
16:00 - 16:50 Android 中 Native 的内存泄露检测 德胜(季丹)阿里巴巴技术专家
16:50 - 17:40 Android应用性能优化经验分享 张明云 步步高高级开发工程师

有必要重点说明的是这次Android会场的主持人是秋百万(廖祜秋)前辈。** 他在主持的同时也讲解了不少东西,实在佩服秋百万前辈

1.国家化技术上的特殊性

2.地图(地图选型、地图切换)

3.漫游网络

滴滴主要服务的是国内用户去国外的情况。地图服务器是 不在AWS上面的。所以主要有海外运营商、用户依然使用国内版本的app在海外漫游的情况。主要讨论用户在海外漫游的情况。
国内用户在国外漫游访问国外服务器慢。
漫游网络,运营商,aws……
用户在国外访问网络的简单流程:
先访问海外运营商,通过海外运营商访问国内运营商,再去访问web。由于墙的存在一般用户是访问不到网络的。

在国外访问网络的简单流程
为了解决这个问题使用了通过国内运营商去访问公网,通过公网访问AWS上的服务器。这种访问方式是比较慢的。
通过访问公网来获取数据
为了解决访问慢的缺陷,做了网络优化。在去访问AWS的时候在中间加一个中转服务器来实现专线访问
专线访问
对于客户端来说,访问专线网络时大概会有三步:
1.拉取中转服务器域名列表
2.对于漫游用户访问中转服务器
3.一定时机及推送更新域名列表
这样做速度大概会比之前快一倍。

4.项目演进

5.现场问答

问题:Integrated Project怎么个打包法?Lyft、GradTaxi这些合并吗?还是它们会被打包成独立的apk?
回答:所有的module都是输出aar,最后一个整合成滴滴app。

我讲解的可能是比较乱,同时可能也不怎么清晰,因为我自身理解的也是不怎么深刻。Piasy的视频连接:滴滴国际化 Android 端演进(包括冯老师分享的开头) 有时间可以自行观看。

近年来插件化,module化的原因,已经不再像过去那样,庞大的软件,改一行代码,测试,耗费开发人员较长时间(虽然我没有亲身体验过以前开发的难度,但是可想而知)。组件化作为独立模块,协同开发时,可以提供release版本进行集成。平时,只须在自己的dev分支上进行开发。大大提高开发效率。各模块之间解耦,当然这其中也面临相关的问题,如大量的反射方式。各rom厂商对系统的改动,就很容易产生各种问题。何俊林在会上请教了apk与apk数据之间如何共享的问题。冯老师建议可用contentprovider。建议在项目的早期做拆分,避免后期组件化的抽离困难。

Paste_Image.png
以我现在的能力是很难听懂冯老师这个分享的,或者说我完全听不懂这个分享。是的,完全没有听懂。
还是分享一下别人的理解吧。
Piasy

原文链接:MDCC 参会纪要
【大公司的方案,不一定符合小公司
模块化,从硬件,系统到软件
APP 的模块化

我自己的理解是把一个项目隔离出各个模块,使分离出的模块成为独立的、可替换的、维护性强的小项目。这样做的带来好处是解耦、兼容性、可维护性。从一开始项目就做好项目的分离工作,使其解耦,为以后打好基础。

组件化

现在IM应用范围很广泛,人与人要通过网络交流就离不开IM,可以说现在大多数的应用都有IM。
比如:社交、电商、教育、医疗等...

Instant:有新消息能立即收到,消息推送无延迟
Messaging:稳定可靠,安全,消息不丢,不乱,不重复

后台运行。答案就是后台运行。

需解决的问题:内存占用、进程优先级
方案:
1.Sticky Service、Alarm、Receiver、JobSchedule
2.建立多进程、双进程。避免使用单进程。


Paste_Image.png

SDK架构的设计


Paste_Image.png

云信IM SDK使用的连接类型有:TCP,UDP,HTTP。
TCP实现长连接,UDP实现一个需要加密处理的连接,HTTP实现收发文件等。
在复杂的Android生态环境下,多种因素都会造成消息推送不能及时达到客户端。另外,不稳定的移动网络也给数据传输的速率和可靠性增加了障碍。演讲从这两个方面出发,讲述了云信IM SDK如何实现不影响用户体验的后台保活,改善的长连接加推送组合方案,以及在弱网环境大数据传输的优化实践。
关于进程怎么在后台活,目前较好的解决方案包括:长连接+推送,系统推送(MIUI、华为为代表)。

长连接+推送
长连接+推送优化
系统优化
系统推送优化
而关于如何活好(主要问题是慢、断、贵),解决办法包括协议选择;
协议选择使用二进制的协议,牺牲了可读性换来的是包非常非常的小,同时拓展性也是比较好的。
协议选择
登录加速(长连接中经常使用,步骤包括Lbs、Connect、Handshake、Login,Sync;优化思路为:尽量减少交互步骤,尽可能并行步骤);
使用TCP的连接方式。
通过减少交互的步骤,尽可能的使用并行步骤来实现登录的加速。连接和LBS并行、捂手和登录并行。
登录加速
UDP优化(常用于音视频服务,对弱网环境更敏感,优化包括:FEC,自适应初始化包频,动态包频和码率调整,数据缓冲Buffer,音频PLC丢包补偿,Temporal Scalability视频编码,以及视频关键帧多重保障);
实时音视频优化
HTTP优化(断点续传,图片预加载,pipeline,边录边传)。
文件传输优化
pipeline优化
边录边传
周江华老师讲的还是比较清晰,内容比较丰富的,基本涵盖了IM开发所要主要的问题。由于我自身能力的限制,理解的还是比较浅显的。附上Piasy的视频连接:【云信 IM 推送保障及网络优化实践上】【云信 IM 推送保障及网络优化实践下】
总体说明:
具体说明:
Dex格式
Diff方案:
Diff方案

- anr,dex 太大,分平台合成 dex,art 上合成小 dex


挑战

- illegal access。
- 性能好,兼容性和稳定性差


V2.0-结果

主要在异常熔断、监控回调、安全、一致性、合成、加载方面进行优化。比较不容易理解,上图。


V3.0目标
结果:
V3.0-结果

提升易用性和稳定性

核心问题:
1.多API获取不准确,反射出问题
2.32位与64位问题
尽量少的hook:
1.LoadLibraryFromTinker(“assets/86”,“stloprt_shared”);
2.LoadLibrary(“stlport_shared”);

预埋entry count:
1.编译强耦合
2.影响基础版本
3.无法随心所欲
全量替换
1.Atlas或者携程的插件化框架
2.Gradle-instant run

Transition动画:ResID无法新增、删除,可能出现Res not found
Notification:ResID无法新增、删除,可能出现Res not found
ShortcutResID无法新增、删除,可能会变成默认图标
Assets:读取 source apk方式无法修改

直接上图


资源包生成
资源处理-资源包生成
资源处理-资源包校验

简单易用:
1.只要输入一个旧的基础包,即可生成补丁包
2.proguard
3.mainDex
4.日志与校验
灵活控制
1.可通过pattern灵活控制需要的内容
2.版本控制
减少补丁包
1.applyMapping
2.appyResourceMapping
3.force jumbo
4.7zip
...

V4.0-结果
**微信开源计划**:[Tinker开源地址](https://github.com/Tencent/tinker)
**同样附上Piasy视频网址**:[微信Tinker热补丁实践演进之路](https://share.yoloyolo.tv/bcs/1224654?sign=8459ca748f9dc1508a920880f2acaaf1&group_id=272492)
**YouTube上Jacks录制的网址**:[微信 Tinker 热补丁实践演进之路——张绍文](https://www.youtube.com/playlist?list=PLmUDvA65lNp28eLBicTEt9oOdpdnGBl9O)

微信开发团队公号:微信开发团队公号 (详细介绍可点击链接,非常详细的介绍,基本是按照演讲的时候介绍思路进行的)

**方案选择,最重要的依据还是我们的需求,回到初心。**

最后附上Android峰会结束后的合影

Android峰会合影

以上是我此次参加MDCC大会总结的全部内容。大多数材料来自于讲师PPT,秋百万前辈、Piasy前辈、何俊林前辈的总结等。欢迎大家提意见,共同进步。有不对的地方还请见谅,请指出我会加以改正。**

再次感谢stormzhang张哥给的机会,非常感谢,我会继续努力。

转载请注明作者——ikook

ikook
2016.09.27


上一篇 下一篇

猜你喜欢

热点阅读