首页
学习
活动
专区
工具
TVP
发布

QQ音乐技术团队的专栏

专栏作者
149
文章
477193
阅读量
302
订阅数
Android深入卡顿分析与实践
1、视觉惯性 视觉预期帧率,用户潜意识里认为下帧也应该是当前帧率刷新比如一直60帧,用户潜意识里认为下帧也应该是60帧率。刷新一直是25帧,用户潜意识里认为下帧也应该是25帧率。但是刷新如果是60帧一下跳变为25帧,扰乱用户视觉惯性。这个时候就会出现用户体验的卡顿感。
QQ音乐技术团队
2023-12-20
5310
Android ExoPlayer 音画同步代码分析
音画同步旨在通过时钟参考的方式,将音频、视频、歌词等播放时间对应起来,确保画面和声音同步。音视频播放器开发中,音画同步是一项非常重要的工作,直接影响用户的视听体验。
QQ音乐技术团队
2023-08-16
8200
深度学习落地移动端——Q音探歌实践(一)
1.摘要 Q音探歌是QQ音乐孵化的一款全新APP,主打高效、准确的“听歌识曲”,“扫描识别MV”功能,这些服务的实现离不开深度学习能力。把深度学习推断带到边缘设备( inference on the edge ),可以减少计算时间,改善用户体验,但是也面临着种种挑战。我们希望本文提供的观察、见解和我们针对不同平台的设计原则能够帮助大家更好地设计和评估移动端的深度学习推断。 2.介绍 2.1深度学习的边缘化发展的机遇 越来越多的服务会使用到深度学习的能力,例如给用户聚类、识别动作与跟踪、语音识别等等。尽管所有
QQ音乐技术团队
2023-03-01
1.6K0
用新技术 “派生” 动听旋律 | Android 开发者故事
不断追求突破的 QQ 音乐,在近 10 年的成长过程中受到了很多用户喜爱。 QQ 音乐 Android 团队平台组的负责人阿宝,在和 QQ 音乐一同寻求突破的过程中,他发现创意、研发和平台的助力是让应用进步的三个重要因素。所以,他和团队一直很关注 Google 在 Android 上的技术发展和版本更新,并努力将新系统的新特性加入到 QQ 音乐中,让用户尽早获得最新体验。 我们来通过☟视频☟了解他们的故事:  阿宝团队里的 Shawn 是 QQ 音乐适配 Android 9 Pie 的工程师,他和同事从 A
QQ音乐技术团队
2023-03-01
4680
大前端开发中的路由管理之五:Flutter篇
        前面大家了解了Web和Native端的路由管理,这篇文章出场的是大前端领域备受开发者喜欢的新秀Flutter。         Flutter作为一款跨平台UI框架,借鉴了React(Web开发框架)的响应式的UI框架设计思想等。在Flutter中,一切皆是Widget(组件),其中StatefulWidget(有状态的组件)和React中的组件类似,可以通过数据变化去手动更新视图,Flutter路由管理实现的核心组件Navigator就是这样的一个StatefulWidget。 1、认
QQ音乐技术团队
2021-11-18
2.1K0
大前端开发中的路由管理之三:Android篇
        我们通常认为Android开发中的路由管理主要分为两部分,Android原生页面栈和混合开发页面栈。在native原生页面中,使用最多的是四大组件之一的Activity和依托于其的Fragment。在混合开发页面中,通常又分为Activity-H5(WebView),Activity-Weex/React-Native,和Activity-Flutter这几种跨平台的页面交互方式。 1、原生之Activity的页面跳转与管理 1.1 从Activity启动模式入手         在An
QQ音乐技术团队
2021-11-10
3.1K0
大前端开发中的路由管理之二:web篇
1、Web路由需要实现的目标         上一篇文章中我们谈到了SPA(Single-page application)的出现,但SPA的应用有个需要解决的问题,就是浏览器只加载记录了一个html,所以当刷新浏览器时js会重新执行,当前页面的内容便会丢失;页面跳转时浏览器不会向服务器发出新的页面请求,浏览器也就无法前进、后退页面。         所以前端web路由需要实现以下目标:       (1)能根据页面URL来获取不同的模块,但不发起新的页面请求;       (2)能监听URL的变化。
QQ音乐技术团队
2021-11-08
1.5K0
大前端开发中的路由管理之一:开篇
一、前言  从早期的传统(Web)前端到当下的大前端,无论是iOS端还是Android端,路由管理这个概念,一直贯穿在应用(APP)开发的过程里。了解路由管理的形成与发展,可以帮助我们理解应用设计与开发,透析其中的技术原理,对于提升个人开发能力也是大有裨益。         QQ音乐技术团队(下称“团队”)汇聚了Web、Android、iOS、Flutter等平台的众多优秀人才,更在如MOO音乐、Q音探歌等项目上,进行了非常多的前沿技术实践,对于路由管理这个技术话题也是积累良多。         围绕页
QQ音乐技术团队
2021-11-05
1K0
大前端开发中的“树” (下)
本系列文章共分为上、下两篇,介绍 Web、Android、iOS、Flutter 这些前终端平台下,与 “树” 及视图系统有关的技术话题,并尝试分析它们之间的异同点;方便从事大前端开发的同学对各平台的技术特性有更广泛的了解。四、iOS 中的树 4.1 视图 iOS 中的视图就是在屏幕上显示的一个矩形块(比如图片,文字或者视频等),它能够拦截触摸手势等用户输入。视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在 iOS 当中,所有的视图都从一个叫做 UIView 的基类派生而来,U
QQ音乐技术团队
2021-10-08
1.9K0
MOO音乐的Flutter实战总结之内存治理(下)
MOO 音乐是 TME 旗下的新锐音乐服务,其团队是公司内最早实践 Flutter 的先行者之一。本系列文章将提炼 MOO APP 开发中遇到的情况,就 Flutter 内存占用治理方面,分享日常开发的一些基本认知、注意要点、排查方法和优化方案。内存治理篇文章共分上、中、下三篇,本篇为下篇。 五、内存优化策略 1. 图片内存优化 各种导致内存增长的资源中,图片引起的问题是尤为明显和常见的,一张高清图动辄几百K,MOO 音乐很多列表都使用 GIF 动图,大小可以达几MB乃至十几MB,图片所占内存跟图片大小有
QQ音乐技术团队
2021-08-23
1.5K0
MOO音乐的Flutter实战总结之内存治理(上)
MOO 音乐是 TME 旗下的新锐音乐服务,其团队是公司内最早实践 Flutter 的先行者之一。本系列文章将提炼 MOO APP 开发中遇到的情况,就 Flutter 内存占用治理方面,分享日常开发的一些基本认知、注意要点、排查方法和优化方案。内存治理篇文章共分上、中、下三篇,本篇为上篇。 一、前言 内存问题几乎是所有软件开发都会碰到的标配问题。追求极致的内存瘦身,可以说是作为一名开发者的本能。MOO 音乐整体采用 Flutter 混合开发架构,在享受到了 Flutter 带来的卓越的跨平台开发效率的
QQ音乐技术团队
2021-08-19
1.6K0
iOS Crash防护你看这个就够了-下篇
0x1: Previously 上篇 中讲到了Crash处理流程分为四个环节,也分析了Crash防护的方法,本章来讲下其余三个环节:Crash的拦截、Crash的上报、Crash的后续。 0x2: Crash的拦截 所有的未被防护住的Crash最终会走到这一步,在这里我们必须要保证拦截的 全面性、稳定性尽可能多的拦截到所有类型的异常,同时拦截逻辑本身不能产生异常。那么我们需要通过以下几个方面去考虑。 I: Crash类型 和多数操作系统一样,iOS的异常也基本分为 用户层 系统底层 信号 这三个类别,
QQ音乐技术团队
2021-06-15
1.4K0
Android全量编译加速——(透明依赖)
1.1. 背景 在我们平常的开发中构建工程是一个基础的环节,决定着开发效率的高低,然而随着业务代码不断累积,编译耗时也随之增长。虽然已经有许多增量编译加速方案,但不可避免的在很多场景,还是需要全量编译。而对于全量编译加速,我们遇到了一些困难: K歌的项目里,总代码量160w行,kotlin代码占比43%左右,编译耗时占比却高达70%,必须要压缩这个比例。 于是需要找到一种方法,既能继续享受kotlin带来的开发便利,也能缓解全量编译时间快速增长的问题。 1.2. 方案 如果能减少kotlin的编译数量,就
QQ音乐技术团队
2021-06-03
2.3K0
全民K歌内存篇3——native内存分析与监控
《全民K歌内存篇1——线上监控与综合治理》 《全民K歌内存篇2——虚拟内存浅析》 《全民K歌内存篇3——native内存分析与监控》 一、背景 在2020年的上半年,我们在用户反馈后台发现闪退、白屏问题不断增多,这些问题严重影响用户体验。观察Crash监控平台发现Crash率也在逐步升高,其中Native层的Top1的crash堆栈信息如下: 这个Crash在整体的crash中占比很大,通过这个堆栈信息,发现并没有明显的指向哪个业务代码。此时,把发生Crash时的内存信息上报到后台,分析发现:Cra
QQ音乐技术团队
2021-04-23
5.2K1
响应式编程|Kotlin与LiveData扩展函数实践技巧
前半部分介绍响应式编程的一些思想,后半部分介绍我们如何基于LiveData实现数据流设计的落地实践。 "一切都是对象 ( Everything is an Object! )" 当使用面向对象(Object-Oriented)的思维去开发时,我们被教导:“一切都是对象 ( Everything is an Object! )”。 我们自顶向下地分解问题,将模块封装为交互(method) 和状态(property)的集合,通过不断将模块拆分成更细的维度,最后形成一个个具有明确定义的内聚性的类(Class) 
QQ音乐技术团队
2021-03-30
1.6K0
全民K歌内存篇2——虚拟内存浅析
《全民K歌内存篇1——线上监控与综合治理》 《全民K歌内存篇2——虚拟内存浅析》 《全民K歌内存篇3——native内存分析与监控》 一、简介 在多任务操作系统中,每个进程都拥有独立的虚拟地址空间,通过虚拟地址进行内存访问主要具备以下几点优势: 进程可使用连续的地址空间来访问不连续的物理内存,内存管理方面得到了简化。 实现进程与物理内存的隔离,对各个进程的内存数据起到了保护的作用。 程序可使用远大于可用物理内存的地址空间,虚拟地址在读写前不占用实际的物理内存,并为内存与磁盘的交换提供了便利。 Androi
QQ音乐技术团队
2021-03-04
3.6K0
MOO 音乐中的Flutter 模糊方案分析
前言 对图片进行模糊化处理,是非常常见的开发场景。在MOO音乐App的模糊优化过程中,我们总结了一些Flutter中模糊使用的一些经验。在确定模糊方案的过程中我们遇到两个选择点,模糊逻辑实现和模糊算法的选择,针对这两个选择点我们设计了四个方案用作对比。 方案一: Flutter BackdropFilter & GaussianBlur 方案二: Dart StackBlur & StackBlur 方案三: Golang GaussianBlur & GaussianBlur 方案四: Golang H
QQ音乐技术团队
2021-02-25
1.2K0
全民k歌适配arm64-v8a方案
导语 近年来,随着计算机硬件的不断发展,32位的旧架构程序的性能瓶颈越来越明显了,适配64位已经是业内公认的大势所趋,从工业化的大型商用软件到移动平台上的app,都已经将适配64位提上了日程。在Android平台,大多数设备都采用Arm架构,最新的64位架构则是Arm64-v8a,全民k歌也将顺应潮流,拥抱64位程序的时代。 本次适配工作由全民k歌Android团队合作完成 1.背景 ARM架构,也被称作高级精简指令集机器(Advanced RISC Machine),是一个精简指令集(RISC)处理器架
QQ音乐技术团队
2021-02-05
2.9K0
QQ音乐Android编译提速之路
1. 序言 工程编译,是Android应用开发工作中的重要一环。而随着工程代码量膨胀,编译耗时也越来越长,拖慢了开发效率。 这个问题在中大型团队中并不少见。以QQ音乐为例,Android工程代码量达到120万行以上,每修改一行代码,都要等待4分钟以上才能在手机上看到改动效果。 为了应对这个问题,我们自研推出了一款增量编译组件。经过一年时间的不断优化,组件已经可以支撑团队内的日常开发工作,有效提升了本地开发场景下的编译效率。 本文将会介绍QQ音乐团队在增量编译组件研发上的探索与实践历程。 2. 问题分析
QQ音乐技术团队
2020-11-09
3.6K5
Pigeon- Flutter多端接口一致性以及规范化管理实践
导语: 跨端开发中,经常会遇到插件,接口管理上的问题。了解完本文,你将会了解Flutter是如何通过Pigeon去解决plugin中多端开发难以管理的问题。 demo源码地址 https://github.com/linpenghui958/flutterPigeonDemo warning:目前Pigeon还是prerelease版本,所以可能会有breaking change。下文以0.1.7版本为例。 为何需要Pigeon 在hybird开发中,前端需要native能力,需要native双端开发
QQ音乐技术团队
2020-10-26
3.6K0
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档