2016.6.24北京GMTC第一日分享上午
热补丁iOS上的jspatch,Android上的nfix。前端开发能力是移动端开发者将来所需要具备的能力。
组件化可以使得App和组件并行开发提高开发效率。追求更好的性能和扩展性。开源化开发,组件化可以更好地开源。可以很容易地把私有的组件项目推广到开源社区。扩展开发团队的视野和开发水平。可以很容易的引入外部好的开发思想和组件。
Google提出了instant App概念。让App的一部分功能直接扩展到系统运行,直接给用户提供服务。语音交互将是未来的趋势。
王永杰(京东,Android系统架构组负责人)分享他的观点
客户端技术架构
- 分层设计
- 模块化(可测试,可观测,可替换)
- 插件化
运营,活动推广越来越重要。提供了标准模板给运营人员定制活动,不需要运营人员写一行代码。体验是Native的。
奔溃率是一个重要指标。对帮助转化率。建立一个动态检测,自动对重大bug或行为异常(比如进入某个页面的数据曲线大幅降低)进行报警。
脱离业务讲技术就是刷流氓。
Facebook iOS 技术发展十年
关注InfoQ公众微信号回复PPT获得嘉宾分享的PPT
覃超(FaceBook早起员工) 带来他的分享。**
- Status quo of Facebook iPhone App
- 1.0: Native + 九宫格
- 2.0: Faceweb(HTML5) + HamburgerMenu
- 3.0: Native + Immutable Data = Hybrid
- Takeaways for us
iOS Engineering @ Facebook
- 1000+ iOS mobile engineers
- 100+ shared libs using Buck to generate
- Module based development
- Data Model: immutable (thread safe)
What you can lear?
- Native->HTML5->Native
- How to scale your mobile team?
- Module based programming React Native
A brief review of the history of Facebook app
Facebook 1.01. Made By solo developer: Joe Hewitt
2. Netscape -> Firebug & DOM inspector -> AOL
3. iPhone app -> Three20
http://joehewitt.com/
Facebook 2.0
2010-2012:Faceweb Era (HTML5)
HTML5 webpages rule all -> Faceweb
Bret Taylor, Dave Fetterman -> Zuck
- HTML5 mobile tech stack
- Easier UI layout
- Cross platform: write once, run anywhere
- Hot push, no app store review neededetc...
Facebook 2.0启示
Engineering Cliches (陷阱)
Cross platform: write once, runs anywhere
- Platform Tax (JS bridge)
- Versioning (Hacks everywhere)
- Comprises for every platform
- Browser Fragmentation
Performance Issue
- No Nitro JS engine in UIWebView
- Single Thread in Javascript
- Touch & Scroll delay in WebView
More Data Consumption
more Battery Consumption
Facebook 3.0 启示
- Performance boosted
- However, 20% crash rate -> Async rendering:CALayer for async rendering, Error in Apple`s documentation
- Delayer by 6 months
- Core Data -> MemDataModel + immutable
Current Facebook
- 90% Native, no interface builder, no storyboard.
- Try to switch to React Native (HTML for UI layout, UI layout code reuse)
- Multiple apps strategy+shared libs (a lot)
- Module based.Product/Feature team works on module. Self contained.
- Navigate using module manager
- URL based