云应用 | 2016.01.20 1
大鱼架构演进
云应用
2016.01.20
云应用 | 2016.01.20 2
1. Demo阶段
2. PGC: 热点、话题
3. PGC: 热点、群聊
4. PGC: 热点、万人群聊
5. UGC: 热点、万人群聊、弱社交
6. UGC: 热点、社交分享 -> LBS
7. 总结
目录
云应用 | 2016.01.20 3
• RxJava: 多线程, 线程池, 任务管理, 异常管理. 禁
止使用AsyncTask, Thread等Android/Java原生
线程相关以及Android Annotation这种注解型框架
• Retrofit: 网络请求
• Picasso: 图片加载与缓存
• Okhttp: 网络通信
• 数据持久化: Android原生
• UI: RecyclerView, support-v21, Toolbar,
SnackBar等Android Lollipop预览版相关控件
Demo阶段
Android客户端架构[0.1, 0.3)
云应用 | 2016.01.20 4
• 白色: 不需要或者需要很少的开发与维护
• 绿色: 需要日常开发与维护
• 蓝色: 需要超越日常工作量的投入, 存在
可控的风险
• 橙色: 需要预研与验证的技术, 存在不可
预知的风险
Demo阶段
Android客户端架构[0.1.0, 0.3)
云应用 | 2016.01.20 5
• 运营管理平台
• 服务器业务接口
• MySql数据持久化
• 一台开发主机
Demo阶段
服务器架构
云应用 | 2016.01.20 6
• Demo版本, 修了两天BUG, 改了几次UI, 就这么上了
• 额外: 预研直播, 群聊相关技术
PGC: 热点、话题
云应用 | 2016.01.20 7云应用 | 2016.01.20 7
PGC: 热点、群聊
差异化: 给用户游戏一
样的用户体验
云应用 | 2016.01.20 8
• 实时网络游戏
• 高可用, 高并发, 优秀的
可扩展性
参考的架构
网易Pomelo架构
https://github.com/NetEase/pomelo
云应用 | 2016.01.20 9
• 引入 Socket.io 框架
• 因为服务器开发是Java工程师, 所以
我们选择了Socket.io + Netty 的方
案
• Socket.io 对移动端的支持, 比当时
的 Pomelo 架构鲁棒性高太多, 现在
的 Pomelo 内部也改用 Socket.io
了
• Socket.io长连接单机可以达到百万
级别, 函数式API
PGC: 热点、群聊
服务器架构 – 陈明
云应用 | 2016.01.20 10
• Socket.io.RxJava: 将 Socket.io 的
函数式接口, 以及大鱼的相关业务接口
改成RxJava Observable式
• 将Retrofit的网络异常, 与 Socket.io
的网络异常全部封装到同一个模块, 代
理给RxJava
• SharePrefer: 对SharedPreference
的链式封装, 简化SharedPreference
使用, 源代码GIST点我
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6)
云应用 | 2016.01.20 11
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, Google与Apple的推荐方案
云应用 | 2016.01.20 12
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, 我们的MUID方案
云应用 | 2016.01.20 13
• 视差动画 - Parallax effects
• View Property Animation
• Layout Transition, Activity Transition,
Fragment Transition
• Shared Element Animation
• View Animation
• Canvas, Bitmap!
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6) 动画相关
• 游戏引擎 – Game engines
• Libgdx
• Cocos2d-x
• Unity
• …
做了十几个动画效果, 改了几个版本UI
云应用 | 2016.01.20 14云应用 | 2016.01.20 14
广播风暴: 同一个话题人数达到1250的时候,
同时发一条消息, 机房网卡就爆了(50MB)
云应用 | 2016.01.20 15
• n² 流量
• 解决方案: 参考网络游戏, 服务器分区
– 连接服务器物理分区, 聊天房间业务逻辑分区
– 精简json结构, 或者更换为protobuf
– 控制广播范围, 从全广播改成声波广播
– 控制用户发送消息频率
– 控制用户接收消息频率
– 图片url使用短code, 由客户端拼接
PGC: 热点、群聊
广播风暴
Connector
Connector
Connectormaster
Connector
消息队列
消息队列
消息队列
消息队列
云应用 | 2016.01.20 16云应用 | 2016.01.20 16
最终方案: 魅族Push通道protobuf重构版本
云应用 | 2016.01.20 17
• Fresco: 比Picasso更优秀的性
能, 更好的扩展性, 对动画的渲
染效率远高于Android原生控件
• Nebula.dayu: 基于nebula, 对
大鱼业务的封装
• Nebula.dayu.RxJava: 将
Nebula与大鱼业务改造成
RxJava式管理, 附加事务推送等
nebula暂时缺失的模块
• UI又改了
PGC: 热点、万人群聊
Android客户端架构[0.6.0, 0.8)
云应用 | 2016.01.20 18
• Push通道: 独立的, 只针对大鱼业务
• 因为原版还在测试阶段, 并没有target
第三方应用
PGC: 热点、万人群聊
服务器架构
云应用 | 2016.01.20 19
• 声波控制消息广播范围和数量
PGC: 热点、万人群聊
服务器架构 声波控制
云应用 | 2016.01.20 20
• 分组实现
PGC: 热点、万人群聊
服务器架构 声波架构 – By 陈金平
Socket服务群,消息收集分发,订阅 Http服务群,非消息业务,图片
Http服
务,运
营和管
理平
台,以
及监控
平台
消息生成服务 消息下发服务
赞/踩,投票站
队服务
Redis
Mysql规定数据
库
归档服务
FastDFS
用户
消息路由中心
(整理消息)
发言
Location服务集群(用户订阅路由中心)
发言
通知逻辑组下发
逐个发送消息
订阅,投票,站队
主题,消息管理等
鉴权和用户管
理服务
大组消息队列A
小房间
A1
小房间
A2
…
…
Slave
云应用 | 2016.01.20 21
• 分组实现
PGC: 热点、万人群聊
服务器架构 声波架构 – By 陈金平
大组消息队列A
小房间
A1
小房间
A2
…
…
Slave
消息接收服务集群 消息分发服务集群
消息路由中心
Redis集群
组临时消息队列
精选时消息队列归档用消息队列
用户群
发消息
存入数据库
转发路由中心
定时分组通知集群
收消息
云应用 | 2016.01.20 22
• 还是解决不了这种问题:
– 用户B与A, C能聊天互动
– 用户A与C却互相看不到
• 但是却将一个房间爆满, 另一个房间只有
几个人的寂寞感, 平均分配到了所有人
PGC: 热点、万人群聊
服务器架构 声波架构
用户A 用户C用户B
云应用 | 2016.01.20 23云应用 | 2016.01.20 23
并行开发流程
云应用 | 2016.01.20 24
云应用 | 2016.01.20 25云应用 | 2016.01.20 25
Apk安全相关: 对于一个应用, 外发到应用市
场, 首要保证安全, 其次是渠道分发推广
云应用 | 2016.01.20 26
• 添加Apk自我保护方案
• 使用Gradle Flavor来定制渠道打包
• RxJava作为整体架构的基础考虑
• Https签名从Java层移动到C层
• 敏感数据使用Gradle加密, C层解密
• 随着项目的变大, SQLite简直就是
业界毒瘤,
• 不, 一切Android偏Framework的
API都是业界毒瘤
• UI又改了, 2次
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1]
云应用 | 2016.01.20 27
• 外部工具Gradle加密数据, 或者流程
• Gradle将APK的release签名加密到NDK层
• Gradle编译过程中将编译的Dex代码信息加密到
NDK层
• Android NDK层反向校验APK的Dex代码信息
• Android NDK层反向校验APK的签名
• Android NDK层解密次数据, 或解密流程
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 28
• 比如Http签名加密整体流程
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 29
• 加密解密
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
Android Apk NDK层解密
Gradle 编译过程加密
云应用 | 2016.01.20 30
• 自签名校验
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 31
• Dex代码校验
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 32
• 二次打包流程
• 早期互联网Android应用,
Ant编译的时候, 二次打包
Apk来加密, 原理与此一致
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 33
• 第二次优化版本, 修改
Gradle编译链, 简化成一
次打包
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 34
• 自我保护方案从大鱼2.0.0之后, 脱离大鱼, 单独维护, 可供其他应用使用, 音乐, 视频, 智能生活等多个
APP已经用到
项目地址: http://gitlab.meizu.com/AppArch/security
• 因为集成比较复杂, 后来又做了个gradle插件, 来帮助应用傻瓜式集成此方案
项目地址: http://gitlab.meizu.com/Cloud/securityplugin
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 35
• 使用Gradle Flavor来定义渠道Flavor
• 借助Gradle resValue, buildConfigField等接口, 将渠道信息注入到Apk的代码与资源中, 以供数据统计
• 修改Gradle Android编译链, 在assemble的时候, 通过时间戳+机编码将apk以及混淆文件mappings绑
定到一起, 归档起来, 以供retrace
• 此归档流程已经集成至魅族Gradle插件2.x版本, 由于服务器不支持x.y.z.CI_CODE 这种版本名, 所以全
功能版本为 dev.2.3
项目地址: http://cloud.meizu.com/dayu/meizugradleplugin/tree/dev_23
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] 渠道分发
云应用 | 2016.01.20 36云应用 | 2016.01.20 36
2.0版本之后, 群聊被砍
云应用 | 2016.01.20 37
• Https全REST full化, 签名
改为Oauth头签名, hmac-
sha256加密算法
• Retrofit升级为2.0-beta3
最新架构
• 全面废弃了渣渣SQLite, 改
用realm数据库并加密, 开
发效率提升了无数倍
• JVM层添加Kotlin语言
• UI又改了
PGC: 热点、万人群聊、社交分享
Android客户端架构3.0.0
云应用 | 2016.01.20 38
• RxJava: 刚开始很难用, 习惯了超好用, 可以大幅度提升多线程, 任务组合, 任务管理等开发效率
• Retrofit: 刚开始很好用, 习惯了更好用, 可以大幅度提升网络接口开发效率
• Realm: 刚开始很难用, 习惯了超好用, 可以大幅度提升数据库开发效率
• Picasso -> Fresco: 难用一点点, 但性能提升
• Kotlin: 刚开始很难用, 习惯了, 越用越好用, 可以大幅度提升敲代码的效率
• 但总体而言: 开发使用了过多不稳定的beta, 甚至experimental技术
总结
Android长期技术选用
云应用 | 2016.01.20 39
• 技术选用: 尽量选择”绿色”, 甚至”白色”的技术, “蓝色”的技术一个阶段最多选一个
• 三方SDK: 各种auth2.0登录SDK, 各种支付SDK, 各种github开源库
• 渠道分发: Gradle必须要懂
• 数据统计: 海外Flurry, 国内友盟
• 推送平台: 极光, 或者parse这样的MBaas
• 灰度测试, 云测
• Android安全: 壳固化技术, 二次打包技术, 或者像大鱼一样的apk保护方案
• 免服务器开发(Baas, MBaas): 海外parse, 国内LeanCloud, bmob等一堆抄袭的
• 总而言之, 所有以上都是资源, 我们要做的是按startup挑选组合一切可以使用的资源
总结
Startup阶段, 移动开发你会遇到的东西
云应用 | 2016.01.20 40
• Ideas -> Validate: 产品idea的验证, 此过程在UI设计之前, 第三方validate公司有 Unbounce
• Plan -> Visualize: 只有通过validate的idea, 才能进入原型图设计, 项目计划阶段
• Project Management: 进入项目管理阶段
• Website: 开发稳步进行的时候, 网站才开始建设, 一般5美刀就可以买到
• SEO: 搜索优化, 与渠道分发准备推进项目上线
• Payment & Legal: 支付接入, 账号系统, 以及法律规避
• Analytic: 产品正常运转了之后, 数据分析开始介入, 用数据来帮助产品提升
• 其实Analytic约等于 Validate, 形成一个子循环, 数据分析是用来自我Validate然后改进下一个产品需求
与迭代的
总结
Startup项目正确的流程
云应用 | 2016.01.20 41
• 网易网络游戏框架: https://github.com/NetEase/pomelo
• Google惟一ID方案: http://developer.android.com/training/articles/user-data-ids.html
• Apk自我保护方案: http://gitlab.meizu.com/AppArch/security/tree/master
• Apk自我保护方案插件: http://gitlab.meizu.com/Cloud/securityplugin/tree/master
• 魅族Gradle插件: http://cloud.meizu.com/dayu/meizugradleplugin
– dev_23分支中包含有apk及mappings归档插件代码
• 推特Oauth加密: https://dev.twitter.com/oauth/overview/creating-signatures
• Startup 15个工具: http://creately.com/blog/diagrams/15-tools-to-launch-your-startup/?utm_content=bu
可供参考的资源
云应用 | 2016.01.20 42
谢谢
云应用 – 刘俊

大鱼架构演进

  • 1.
    云应用 | 2016.01.201 大鱼架构演进 云应用 2016.01.20
  • 2.
    云应用 | 2016.01.202 1. Demo阶段 2. PGC: 热点、话题 3. PGC: 热点、群聊 4. PGC: 热点、万人群聊 5. UGC: 热点、万人群聊、弱社交 6. UGC: 热点、社交分享 -> LBS 7. 总结 目录
  • 3.
    云应用 | 2016.01.203 • RxJava: 多线程, 线程池, 任务管理, 异常管理. 禁 止使用AsyncTask, Thread等Android/Java原生 线程相关以及Android Annotation这种注解型框架 • Retrofit: 网络请求 • Picasso: 图片加载与缓存 • Okhttp: 网络通信 • 数据持久化: Android原生 • UI: RecyclerView, support-v21, Toolbar, SnackBar等Android Lollipop预览版相关控件 Demo阶段 Android客户端架构[0.1, 0.3)
  • 4.
    云应用 | 2016.01.204 • 白色: 不需要或者需要很少的开发与维护 • 绿色: 需要日常开发与维护 • 蓝色: 需要超越日常工作量的投入, 存在 可控的风险 • 橙色: 需要预研与验证的技术, 存在不可 预知的风险 Demo阶段 Android客户端架构[0.1.0, 0.3)
  • 5.
    云应用 | 2016.01.205 • 运营管理平台 • 服务器业务接口 • MySql数据持久化 • 一台开发主机 Demo阶段 服务器架构
  • 6.
    云应用 | 2016.01.206 • Demo版本, 修了两天BUG, 改了几次UI, 就这么上了 • 额外: 预研直播, 群聊相关技术 PGC: 热点、话题
  • 7.
    云应用 | 2016.01.207云应用 | 2016.01.20 7 PGC: 热点、群聊 差异化: 给用户游戏一 样的用户体验
  • 8.
    云应用 | 2016.01.208 • 实时网络游戏 • 高可用, 高并发, 优秀的 可扩展性 参考的架构 网易Pomelo架构 https://github.com/NetEase/pomelo
  • 9.
    云应用 | 2016.01.209 • 引入 Socket.io 框架 • 因为服务器开发是Java工程师, 所以 我们选择了Socket.io + Netty 的方 案 • Socket.io 对移动端的支持, 比当时 的 Pomelo 架构鲁棒性高太多, 现在 的 Pomelo 内部也改用 Socket.io 了 • Socket.io长连接单机可以达到百万 级别, 函数式API PGC: 热点、群聊 服务器架构 – 陈明
  • 10.
    云应用 | 2016.01.2010 • Socket.io.RxJava: 将 Socket.io 的 函数式接口, 以及大鱼的相关业务接口 改成RxJava Observable式 • 将Retrofit的网络异常, 与 Socket.io 的网络异常全部封装到同一个模块, 代 理给RxJava • SharePrefer: 对SharedPreference 的链式封装, 简化SharedPreference 使用, 源代码GIST点我 PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6)
  • 11.
    云应用 | 2016.01.2011 PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, Google与Apple的推荐方案
  • 12.
    云应用 | 2016.01.2012 PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, 我们的MUID方案
  • 13.
    云应用 | 2016.01.2013 • 视差动画 - Parallax effects • View Property Animation • Layout Transition, Activity Transition, Fragment Transition • Shared Element Animation • View Animation • Canvas, Bitmap! PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6) 动画相关 • 游戏引擎 – Game engines • Libgdx • Cocos2d-x • Unity • … 做了十几个动画效果, 改了几个版本UI
  • 14.
    云应用 | 2016.01.2014云应用 | 2016.01.20 14 广播风暴: 同一个话题人数达到1250的时候, 同时发一条消息, 机房网卡就爆了(50MB)
  • 15.
    云应用 | 2016.01.2015 • n² 流量 • 解决方案: 参考网络游戏, 服务器分区 – 连接服务器物理分区, 聊天房间业务逻辑分区 – 精简json结构, 或者更换为protobuf – 控制广播范围, 从全广播改成声波广播 – 控制用户发送消息频率 – 控制用户接收消息频率 – 图片url使用短code, 由客户端拼接 PGC: 热点、群聊 广播风暴 Connector Connector Connectormaster Connector 消息队列 消息队列 消息队列 消息队列
  • 16.
    云应用 | 2016.01.2016云应用 | 2016.01.20 16 最终方案: 魅族Push通道protobuf重构版本
  • 17.
    云应用 | 2016.01.2017 • Fresco: 比Picasso更优秀的性 能, 更好的扩展性, 对动画的渲 染效率远高于Android原生控件 • Nebula.dayu: 基于nebula, 对 大鱼业务的封装 • Nebula.dayu.RxJava: 将 Nebula与大鱼业务改造成 RxJava式管理, 附加事务推送等 nebula暂时缺失的模块 • UI又改了 PGC: 热点、万人群聊 Android客户端架构[0.6.0, 0.8)
  • 18.
    云应用 | 2016.01.2018 • Push通道: 独立的, 只针对大鱼业务 • 因为原版还在测试阶段, 并没有target 第三方应用 PGC: 热点、万人群聊 服务器架构
  • 19.
    云应用 | 2016.01.2019 • 声波控制消息广播范围和数量 PGC: 热点、万人群聊 服务器架构 声波控制
  • 20.
    云应用 | 2016.01.2020 • 分组实现 PGC: 热点、万人群聊 服务器架构 声波架构 – By 陈金平 Socket服务群,消息收集分发,订阅 Http服务群,非消息业务,图片 Http服 务,运 营和管 理平 台,以 及监控 平台 消息生成服务 消息下发服务 赞/踩,投票站 队服务 Redis Mysql规定数据 库 归档服务 FastDFS 用户 消息路由中心 (整理消息) 发言 Location服务集群(用户订阅路由中心) 发言 通知逻辑组下发 逐个发送消息 订阅,投票,站队 主题,消息管理等 鉴权和用户管 理服务 大组消息队列A 小房间 A1 小房间 A2 … … Slave
  • 21.
    云应用 | 2016.01.2021 • 分组实现 PGC: 热点、万人群聊 服务器架构 声波架构 – By 陈金平 大组消息队列A 小房间 A1 小房间 A2 … … Slave 消息接收服务集群 消息分发服务集群 消息路由中心 Redis集群 组临时消息队列 精选时消息队列归档用消息队列 用户群 发消息 存入数据库 转发路由中心 定时分组通知集群 收消息
  • 22.
    云应用 | 2016.01.2022 • 还是解决不了这种问题: – 用户B与A, C能聊天互动 – 用户A与C却互相看不到 • 但是却将一个房间爆满, 另一个房间只有 几个人的寂寞感, 平均分配到了所有人 PGC: 热点、万人群聊 服务器架构 声波架构 用户A 用户C用户B
  • 23.
    云应用 | 2016.01.2023云应用 | 2016.01.20 23 并行开发流程
  • 24.
  • 25.
    云应用 | 2016.01.2025云应用 | 2016.01.20 25 Apk安全相关: 对于一个应用, 外发到应用市 场, 首要保证安全, 其次是渠道分发推广
  • 26.
    云应用 | 2016.01.2026 • 添加Apk自我保护方案 • 使用Gradle Flavor来定制渠道打包 • RxJava作为整体架构的基础考虑 • Https签名从Java层移动到C层 • 敏感数据使用Gradle加密, C层解密 • 随着项目的变大, SQLite简直就是 业界毒瘤, • 不, 一切Android偏Framework的 API都是业界毒瘤 • UI又改了, 2次 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1]
  • 27.
    云应用 | 2016.01.2027 • 外部工具Gradle加密数据, 或者流程 • Gradle将APK的release签名加密到NDK层 • Gradle编译过程中将编译的Dex代码信息加密到 NDK层 • Android NDK层反向校验APK的Dex代码信息 • Android NDK层反向校验APK的签名 • Android NDK层解密次数据, 或解密流程 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 28.
    云应用 | 2016.01.2028 • 比如Http签名加密整体流程 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 29.
    云应用 | 2016.01.2029 • 加密解密 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案 Android Apk NDK层解密 Gradle 编译过程加密
  • 30.
    云应用 | 2016.01.2030 • 自签名校验 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 31.
    云应用 | 2016.01.2031 • Dex代码校验 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 32.
    云应用 | 2016.01.2032 • 二次打包流程 • 早期互联网Android应用, Ant编译的时候, 二次打包 Apk来加密, 原理与此一致 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 33.
    云应用 | 2016.01.2033 • 第二次优化版本, 修改 Gradle编译链, 简化成一 次打包 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 34.
    云应用 | 2016.01.2034 • 自我保护方案从大鱼2.0.0之后, 脱离大鱼, 单独维护, 可供其他应用使用, 音乐, 视频, 智能生活等多个 APP已经用到 项目地址: http://gitlab.meizu.com/AppArch/security • 因为集成比较复杂, 后来又做了个gradle插件, 来帮助应用傻瓜式集成此方案 项目地址: http://gitlab.meizu.com/Cloud/securityplugin PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 35.
    云应用 | 2016.01.2035 • 使用Gradle Flavor来定义渠道Flavor • 借助Gradle resValue, buildConfigField等接口, 将渠道信息注入到Apk的代码与资源中, 以供数据统计 • 修改Gradle Android编译链, 在assemble的时候, 通过时间戳+机编码将apk以及混淆文件mappings绑 定到一起, 归档起来, 以供retrace • 此归档流程已经集成至魅族Gradle插件2.x版本, 由于服务器不支持x.y.z.CI_CODE 这种版本名, 所以全 功能版本为 dev.2.3 项目地址: http://cloud.meizu.com/dayu/meizugradleplugin/tree/dev_23 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] 渠道分发
  • 36.
    云应用 | 2016.01.2036云应用 | 2016.01.20 36 2.0版本之后, 群聊被砍
  • 37.
    云应用 | 2016.01.2037 • Https全REST full化, 签名 改为Oauth头签名, hmac- sha256加密算法 • Retrofit升级为2.0-beta3 最新架构 • 全面废弃了渣渣SQLite, 改 用realm数据库并加密, 开 发效率提升了无数倍 • JVM层添加Kotlin语言 • UI又改了 PGC: 热点、万人群聊、社交分享 Android客户端架构3.0.0
  • 38.
    云应用 | 2016.01.2038 • RxJava: 刚开始很难用, 习惯了超好用, 可以大幅度提升多线程, 任务组合, 任务管理等开发效率 • Retrofit: 刚开始很好用, 习惯了更好用, 可以大幅度提升网络接口开发效率 • Realm: 刚开始很难用, 习惯了超好用, 可以大幅度提升数据库开发效率 • Picasso -> Fresco: 难用一点点, 但性能提升 • Kotlin: 刚开始很难用, 习惯了, 越用越好用, 可以大幅度提升敲代码的效率 • 但总体而言: 开发使用了过多不稳定的beta, 甚至experimental技术 总结 Android长期技术选用
  • 39.
    云应用 | 2016.01.2039 • 技术选用: 尽量选择”绿色”, 甚至”白色”的技术, “蓝色”的技术一个阶段最多选一个 • 三方SDK: 各种auth2.0登录SDK, 各种支付SDK, 各种github开源库 • 渠道分发: Gradle必须要懂 • 数据统计: 海外Flurry, 国内友盟 • 推送平台: 极光, 或者parse这样的MBaas • 灰度测试, 云测 • Android安全: 壳固化技术, 二次打包技术, 或者像大鱼一样的apk保护方案 • 免服务器开发(Baas, MBaas): 海外parse, 国内LeanCloud, bmob等一堆抄袭的 • 总而言之, 所有以上都是资源, 我们要做的是按startup挑选组合一切可以使用的资源 总结 Startup阶段, 移动开发你会遇到的东西
  • 40.
    云应用 | 2016.01.2040 • Ideas -> Validate: 产品idea的验证, 此过程在UI设计之前, 第三方validate公司有 Unbounce • Plan -> Visualize: 只有通过validate的idea, 才能进入原型图设计, 项目计划阶段 • Project Management: 进入项目管理阶段 • Website: 开发稳步进行的时候, 网站才开始建设, 一般5美刀就可以买到 • SEO: 搜索优化, 与渠道分发准备推进项目上线 • Payment & Legal: 支付接入, 账号系统, 以及法律规避 • Analytic: 产品正常运转了之后, 数据分析开始介入, 用数据来帮助产品提升 • 其实Analytic约等于 Validate, 形成一个子循环, 数据分析是用来自我Validate然后改进下一个产品需求 与迭代的 总结 Startup项目正确的流程
  • 41.
    云应用 | 2016.01.2041 • 网易网络游戏框架: https://github.com/NetEase/pomelo • Google惟一ID方案: http://developer.android.com/training/articles/user-data-ids.html • Apk自我保护方案: http://gitlab.meizu.com/AppArch/security/tree/master • Apk自我保护方案插件: http://gitlab.meizu.com/Cloud/securityplugin/tree/master • 魅族Gradle插件: http://cloud.meizu.com/dayu/meizugradleplugin – dev_23分支中包含有apk及mappings归档插件代码 • 推特Oauth加密: https://dev.twitter.com/oauth/overview/creating-signatures • Startup 15个工具: http://creately.com/blog/diagrams/15-tools-to-launch-your-startup/?utm_content=bu 可供参考的资源
  • 42.
    云应用 | 2016.01.2042 谢谢 云应用 – 刘俊