在应用开发中,质量和效益是非常关键的因素。网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读。

框架赋能

典型的开发框架从上往下分为三层,分别是业务层、服务层、能力层,三者之间是垂直依赖的关系,且业务层之间的水平模块不互相依赖,这样的分层有助于不同APP和同一APP间进行代码互用。

能力层跟业务逻辑完全没有关系,可以直接迁移,服务层可以按需定制,最上面的业务层则是开发者最熟悉的业务模块。

插件化

插件属于业务层的组件,行业中的设计方案很多,网易云音乐在插件设计时主要考虑三点因素:

设计简单

开箱即用、用完即止,最好是原生方案。

维护成本

当一个APP有非常多插件的时候,维护成本是非常重要的问题。有些插件可能依赖宿主的代码或资源,会对应用造成很大的不确定性。

性能

要求插件具有很好的运行效率。

网易云音乐插件设计实现:

首先,插件主体载体是Fragment,非常轻量,可以嵌在任何一个Activity里面。只要预埋一个Activity,就可以启动任何一个插件模块。网易云音乐把UI组件和代码冗余打包到插件包中,这样虽然增加插件体积,但会减少维护成本。

对于图片、网络这些能力层的功能,网易云音乐则使用服务接口来提供。这样一方面是为了减少依赖,另一方面可以让开发者在插件开发时保持和传统APP开发相同的习惯。

服务接口主要使用两种方式,一种是路由,一种是服务注册。为了尽可能避免进行对象的序列化和反序列化,网易云音乐把Meta层下沉到底部,开发者可以直接面向接口编程,同时建议插件尽量不依赖代码,也尽量不要固定宿主的资源ID或者修改插件的ID前缀,以免造成冗杂。

得益于非常轻量的原生插件实现,网易云音乐运行效率非常高。

组件化

上层业务组件水平模块之间不相互依赖,也为组件化提供了很好的支持。如上图,在开放一个动态功能时,只需将动态业务组件和核心业务组件打包在一起,便形成了一个动态业务壳;开发评论组件时,同样是把评论组件和核心业务组件打包在一起。这样的设计可以支持热拔插,提高业务线的并行开发效率,同时可以极大地减少编译速度。

全链路开发流程

全链路开发流程作为一个平台,串起了开发过程中的很多节点。那么,这套流程是如何保证开发效率的呢?

卡点

开发流程被分配到每个节点,每个节点都有各自的任务和责任。通过节点分配,将节点痛点逐一击破,极大地提高开发效率。

自动化

自动化是整个平台的核心,所有的自动化测试都是为了质量而生。自动化有一个非常重要的应用场景——自动打点,这是开发者的痛点,打点占用了开发太多时间。云音乐通过编译期进行代码注入自动生成打点,极大地提高了效率,减少了人工出错的可能性。

闭环

无论是版本数据,还是上线以后对数据指标的监控,云音乐通过数据发展趋势反哺于开发质量形成闭环。

以网络治理为例:客户端的网络问题非常复杂,云音乐通过观察线上网络指标来辅助策略的调整。通过ABTest实验,以观察网络连通性是否提升,再通过观察数据,调整网络优化策略,以此往复,形成闭环。

思考和建议

1.警惕拿来主义

不同方案适用于不同公司的问题,直接拿过来使用可能会有一些不良反应,所以一定要结合各APP的实际情况来仔细分析。

2.简单设计

简单设计意味着很多,更简单的设计意味着更高效的运行、更少的维护成本,简约往往并不简单。

3.量化指标

没有数据就没有话语权,没有数据就会失去方向,只有有了量化指标,才能呈现一个闭环。

4.勤思考 多沟通

需要开发者勤思考,多与他人沟通交流。例如在 “分享图标”的设计上,不同的应用会做一些差异化的设计。但如果设计过度,导致与其他大部分应用有较大差异,使用户无法识别出“分享图标”时,会造成分享率降低的后果。

*本文根据梁建讲师在安卓绿色联盟开发者大会现场的议题分享整理而成。

想了解更多,请点击观看讲师精彩现场视频>>>>

v.qq.com/x/page/o080…

安卓绿色联盟会根据每期技术沙龙议题输出精彩技术干货文章,分享讲师PPT,为未能现场参加技术沙龙的您提供另一个干货学习机会。

在应用开发中,网易云音乐如何兼顾质量和效益 1相关推荐

  1. 在应用开发中,网易云音乐如何兼顾质量和效益

    在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...

  2. 基于React全家桶开发「网易云音乐PC」项目实战(二)

    前言 本篇开始做 「网易云音乐PC」项目,建议最好有以下基础react.redux.redux-thunk.react-router,上一章只是对项目进行初步介绍认识,本章节会带你完成:网易云的基本骨 ...

  3. 网易云音乐开发--通过网易云音乐api,游客登录页面验证效果实现

    收集表单项数据,event对象传参 登录流程 1.收集表单项数据 2.前端验证 1)验证用户信息(账号,密码)是否合法 2)  前端验证不通过就提示用户,不需要发请求给后端 3)前端验证通过了,发请求 ...

  4. Vue3+Vite+TS独立开发仿网易云音乐Web应用

    项目背景 自己之前的项目要么就是比较小的,要么就是跟着视频敲的,感觉做完之后并没有很好地吸收学到的知识.于是想要自己独立地做一个前端项目,刚好看到网易云音乐的网页端没有它的客户端好看,于是就仿照网易云 ...

  5. 基于React全家桶开发「网易云音乐PC」项目实战(一)

    网易云音乐PC项目实战 项目简介 1.项目介绍 项目使用到的技术栈 CSS使用Flex进行布局 配置路径别名使用: carco 项目路由使用: react-router来管理 使用react-rout ...

  6. 尚硅谷微信小程序开发 仿网易云音乐App 小程序 后端接口服务器搭建

    目录 小程序学习 视频相关的教程文档与笔记分享 配套服务器 源码地址: 接口使用说明文档 接口列表 启动服务 测试服务启动OK网页 http://localhost:3000/test.html​编辑 ...

  7. 基于Kotlin(可转Java)开发的网易云音乐爬虫项目

    简介 基于kotlin环境开发,但转Java是可以的,只是多写点代码而已.直奔主题,我是朝着云音乐的评论去的,在接口没有暗改前这个还是可以使用的,具体代码参见:CloudMusic 先说一下使用方法, ...

  8. iApp开发的网易云音乐下载工具源码

    正文: 目前已经对接酷狗和网易云的官方接口,所有VIP音乐都可以下载了的,酷狗有个代码在编辑框的文本更新监听事件里的文本内容已改变. 程序: lanzou.com/iyVAK04astvi 图片:

  9. 微信小程序云开发之网易云音乐

    这是跟着慕课网谢成老师敲得代码 注意 知识点 疑惑 思路 妙 优化 一个要注意的地方:如果获取歌词的时候报错(才发现解决办法的图片没传上来 大概就是改变一下请求头数据) 第一章课程介绍 云开发(音乐播 ...

最新文章

  1. Attention最新进展
  2. Windows文件系统过滤驱动开发教程(4,5)
  3. 【开发环境】PyCharm 打开现有 Python 工程 ( 配置 Python 编译器版本 )
  4. Cmder命令行工具在Windows系统中的配置
  5. .NET平台开源项目速览(4).NET文档生成工具ADB及使用
  6. 麦克纳姆轮运动原理_麦克纳姆轮介绍
  7. IE下常见兼容性问题记录汇总(04-持续更新)
  8. Java笔记(十九) 反射
  9. 手机升级android5.0,Android 7.0就要来了?你家手机升级到5.0了吗?
  10. elasticSearch -- (文档,类型,索引)
  11. 关于游戏架构设计的一些整理吧
  12. 最全编程语言在线 API 文档
  13. maven的pom介绍及配置
  14. session实现购物系统的简例和application实现统计页面访问次数的简例
  15. pidgin-lwqq
  16. Ajax控件之ScriptManager与UpdatePanel用法 by:凉游浅笔深画眉 / Net7Cracker
  17. 英语专升本——常考固定搭配【一百零八将】
  18. 阿里云Landing Zone系列--1云治理中心使用
  19. Oracle创建表空间,用户,及权限
  20. 导出excel换行问题,一个单元格多张图片问题,数组对象去重处理,计算属性传参

热门文章

  1. mac 硬盘占用过大?
  2. 计算机一级光盘如何安装,示例光盘如何装系统
  3. Drill界面简单介绍
  4. 这篇专门推荐给学 Android 的同学,建议收藏!
  5. ×××(虚拟专用网络)
  6. HUAWEI WATCH GT Cyber表壳换装指导
  7. C#中国象棋代码-棋子移动类
  8. Foxit MobilePDF SDK_如何快速创建一个功能丰富的PDF 阅读器
  9. html5地图图片拖拽,javascript html5 canvas实现可拖动省份的中国地图
  10. Executors线程池知识点总结