2016MDCC总结

Android开发峰会

滴滴国际化之路


地图选型考虑全面:功能与需求,数据源,技术支持力度,性能,用户,包大小,demo及文档

地图切换:有一套自己的抽象,再对具体实现一个adapter

项目演进:

按包名划分,仍存在大量耦合,添加新业务不便

分sdk和业务模块,作为独立的module,最后集合成一个apk

国内地图:谷歌地图

海外地图:Mapbox、Natiteq

Mapbox大小为5M,全开源,DEMO及文档完整,用法基本与谷歌地图一致

Natiteq大小为7M,全开源,DEMO及文档完整,用法不寻常

其他:漫游网络,运营商,AWS...

容器化到组件化


组件化:

特性:独立性、可替换性、互操作性

成本:解耦、契约、兼容性

收益:低耦合、模块独立、组件独立测试、集成灵活、组件独立升级、混合开发平滑过渡

基础解决方案:JAVA PackageName、Gradle module、mutiple app

从第一天开始坚持解耦,为中长期打好基础

Tinker实践之路


热补丁两大流派。

减小安装大小,对特定有问题的用户推送补丁包,获取调试信息。

技术是用来解决问题的:稳定性和兼容性,性能,易用性。

1.0小试牛刀

基于classloader的方案

preverify问题,内存地址错乱,性能差,补丁包大

2.0自创功法

dex diff

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

illegal access。

性能好,兼容性和稳定性差

3.0修炼内功

异常、调试信息收集

4.0内外兼修

提升易用性和稳定性

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

开源地址:https://github.com/Tencent/tinker

Android性能优化

检测工具

启动速度:

Hierarchy Viewer

StrictMode

TraceView

Hugo

流畅度:

Android Studio

开发者选项

StrictMode

TraceView

Hugo

内存:

Android Studio

Leakcanary

功耗:

Android Studio

开发者选项

跨平台专场

从React到ReactNative


由NHN Techorus的Web前端部门经理带来的RN发展历程

Web优势:

一次编写,几乎可以在所有平台运行

搜索引擎可爬性

版本控制简单

可分享性

Web应用的问题:

页面的载入时间,离线体验

无法利用主屏幕图标,推送通知等功能增强应用画面外的

互动

受限于浏览器的实现,用户体验难以匹敌Native应用

–相机,音频,视频,后台,振动,剪贴板,应用内支付……

Android的老旧机种上的性能问题

发展:ReactDOM to ReactNative

•弃用DOM,置换HTML元素成ReactNative组件

–画面排版活用View, Text, Image, ScrollView组件

–表单元素活用TextInput, Slider, Switch, Picker组件

–注意弃用DOM的同时也意味着将不能使用面向浏览器的库(比

如jQuery)

•弃用CSS,转用Inline

Style属性

–利用ReactNative组件的style属性来指定样式

–活用JavaScript特性以及StyleSheet

API进行样式管理

•ReactNative提供了3种和服务器通信的手段

–Fetch API

–XMLHttpRequest API

–WebSocket API

通信层可以根据各自情况进行重构


2016MDCC总结_第1张图片

美团点评ReactNative


为什么用RN


2016MDCC总结_第2张图片


框架模式:

Native APP+RN功能:

JS包小,不到1M

可以使用热更新

使用现有的Native资源

使用在已有一定规模的APP,尝试性地添加小功能

RN APP+Native功能

不需要多少Native技术

JS包将越来越大

热更新要重新启动

使用在新的App中

使用场景

Native:view数量很多(大于1000),强交互效果

RN:view少

RN升级应对:

有选择的阶段性升级

尽早确定代码风格和规范,协调好开发节奏

完善CI流程、单元测试

尽量把平台差异性代码放到组件中处理(而不是业务代码中)

RN预估:

将来必会有一次大的API跳转

1.0版本将在4年后发布

代码美观:F8StyleSheet


Weex Native Architecture

Weex是阿里巴巴团队研发并开源的项目,也能够跟RN一样提供跨平台功能,但是由于其开源时间比RN迟,并且同样没解决RN所遇到的问题,所以活跃程度远不及RN。目前只有一个理由能支持它,就是支持国产。

你可能感兴趣的:(2016MDCC总结)