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

微信终端开发团队的专栏

专栏成员
111
文章
456988
阅读量
515
订阅数
Android微信客户端是如何支持R8构建的?
作者:chrispaul,来自微信客户端团队 背景 在之前的版本,微信Android一直采用Proguard构建Release包,主要原因在于: Proguard优化足够稳定 ApplyMapping也能保证正确性 与AutoDex搭配使用,生成足够小的Tinker Patch。 但Proguard也有明显的不足之处: Kotlin版本的升级与Proguard存在不兼容,导致被迫升级Proguard版本; Proguard版本升级导致编译时间变慢,超过30min; 由于历史原因,一些keep规则导致包大小无
微信终端开发团队
2023-05-12
2.1K0
微信全文搜索优化之路
本文首次发表在《程序员》杂志 2017 年 09 月期。 前言 ---- 基于本地数据的全文搜索(Full-Text-Search,FTS)在移动应用上扮演着重要的角色。与基于服务端提供的搜索服务不同,移动端受硬件条件限制,尤其在数据量相对较大的情况下,搜索性能问题表现得十分突出。本文以移动平台广泛采用的SQLite FTS Extension为例,介绍了移动平台FTS的基本原理,结合微信安卓客户端自身实践,重点讲述微信在FTS上的一些性能优化经验。 SQLite FTS Extension ---- SQ
微信终端开发团队
2023-02-20
1.6K0
无障碍功能框架:如何让残疾/老龄群体更好使用微信?
作者:nalecyxu 简介:微信客户端Android团队,负责无障碍功能框架开发。 前言 为了帮助老年人、残疾人(视障/听障人群等)更好地使用微信App,Android微信完成了适老化及无障碍改造。本文主要介绍「Android根据适老化及无障碍需求 完成的一个协助业务侧进行无障碍功能开发的框架」,主要包括: 需求说明 框架简介 基础知识 整体流程 执行原理 核心说明 走查工具 框架需求 本框架主要具备以下特性: 可感知性 包括大字体适配,颜色对比度等 可操作性 主要是过小热区的放大,提高老年人/残疾人的交
微信终端开发团队
2022-03-29
1.6K0
iOS微信全文搜索技术优化
一、iOS微信全文搜索技术的现状 全文搜索是使用倒排索引进行搜索的一种搜索方式。倒排索引也称为反向索引,是指对输入的内容中的每个Token建立一个索引,索引中保存了这个Token在内容中的具体位置。全文搜索技术主要应用在对大量文本内容进行搜索的场景。 微信终端涉及到大量文本搜索的业务场景主要包括联系人、聊天记录、收藏的搜索。这些搜索功能从2014年上线至今,已经多年没有更新底层搜索技术,聊天记录使用的全文搜索引擎还是SQLite FTS3,而现在已经有SQLite FTS5,收藏首页的搜索还是使用简单的Li
微信终端开发团队
2022-02-23
2.3K0
微信Android增量Proguard方案
背景 随着业务的快速发展,Release构建速度问题不断凸显,从2020年底构建50min到如今接近1h30min的构建时长,其中Proguard阶段耗时占用了接近40%, 时刻影响着工作效率。在整个Release构建耗时链路上,业界优化方案众多,并起到了一定的优化效果。然而我们另辟蹊径,自研一套Inc-Proguard方案,解决了无法增量Proguard问题,实现将耗时降低到分钟级别。 问题出在哪? 目前Android微信采用模块化的Gradle构建方式,也是业界普遍采用的一种方式。大致构建流程如下:
微信终端开发团队
2022-01-26
2.3K1
企业微信超大型工程-跨全平台UI框架最佳实践
一. 背景 企业微信的跨平台之路 企业微信作为跨android、ios、mac、pc、web五个端,超千万行代码的超大型工程,每一个需求迭代周期,都需要5端同步开发、发版,不管是对于开发,还是产品、设计、测试来说,都是一个巨大的挑战。 企业微信初期架构设计上就将底层网络、db以及大部分业务逻辑都抽离到c++实现,以供多平台复用。但是UI还是各平台独自处理,从开发的角度来看,移动端的android、ios,电脑端的mac、pc,同样的界面布局,却需要写两套逻辑代码,因此,ui的跨平台诉求是我们的一大痛点
微信终端开发团队
2021-09-23
4.1K0
线程:“你可能把握不住”—— Android 平台下线程导致的内存问题
看了 《Android 的离奇陷阱 — 设置线程优先级导致的微信卡顿惨案》这篇文章,有没有觉得原来大家再熟悉不过的线程,也还有鲜为人知的坑?除此之外,微信与线程之间还有很多不得不说的故事,下面跟大家分享一下线程还会导致什么样的内存问题。 [anon:thread stack guard page] 在分析虚拟内存空间耗尽导致的 crash 问题时,我们在 /proc/[pid]/maps 中发现了新增了不少跟以往不一样 case,内存中充满了大量这样的块: 从 map entry 的名字与内存大小和权
微信终端开发团队
2021-09-08
4.3K0
Android App 电量统计原理与优化
App “耗电综合征” 当我们说一个 App 耗电的时候我们在说什么? 我们可能是指 App 吃 CPU 导致系统掉电快,也可能是在说系统告警 App 后台扫描频繁消耗电量,还可能是在说使用 App 时手机发烫严重…… 是的,相对于 Crash、ANR 等常见的 APM 指标,Android App 电量优化更像是一个综合性的问题。 一方面,造成 App 耗电的原因是多种多样的,比如 CPU/GPU Load、屏幕、传感器以及其他硬件开销等,每个分类的排查思路是大相径庭的,再加上 AOSP 没有 “官方”
微信终端开发团队
2021-08-04
4.9K0
微信Android客户端的ANR监控方案
ANR监控是一个非常有年代感的话题了,但是市面上的ANR监控工具,或者并非真正意义上的ANR的监控(而是5秒卡顿监控);或者并不完善,监控不到到所有的ANR。而想要得到一个完善的ANR监控工具,必须要先了解系统整个ANR的流程。本文分析了ANR的主要流程,给出了一个完善的ANR监控方案。该方案已经在Android微信客户端上经过全量验证,稳定地运行了一年多的时间。 我们知道ANR流程基本都是在system_server系统进程完成的,系统进程的行为我们很难监控和改变,想要监控ANR就必须找到系统进程跟
微信终端开发团队
2021-07-19
4.7K0
微信Android客户端的卡顿监控方案
文章开始,先聊一聊卡顿与ANR的关系:产生卡顿的根本原因是UI线程不能够及时的进行渲染,导致UI的反馈不能按照用户的预期,连续、一致的呈现。产生卡顿的原因多种多样,很难一一列举,而ANR是Google人为规定的概念,产生ANR的原因最多也只有四个。 一方面,两者息息相关,事实上,长时间的UI卡顿是导致ANR最常见的原因;但另一方面,从原理上来看,两者既不充分也不必要,是两个维度的概念。 而市面上的一些卡顿监控工具,经常被拿来监控ANR(卡顿阈值设置为5秒),这其实很不严谨:首先,5秒只是发生ANR的其中一
微信终端开发团队
2021-07-14
3.6K0
Klee:用 C++ 实现数据驱动开发
提起 C++ 这门已有 38 年历史的语言,大家或多或少都会有一定的了解,“面向对象”、“过程式编程”这些词汇立刻在脑海中浮现出来。“高性能”、“高复杂性”这两大标签,也伴随着 C++ 多年来一直在众多语言中独树一帜。 而我们在实际项目的开发过程中发现,同一个功能,综合考虑前期开发、后期 bug 与 UI 还原等阶段的人力投入,使用 Web 技术栈 来实现前端页面,研发效率大约是 平台原生开发 的 2 到 3 倍。这其中开发效率的差异,让我们好奇去深入探究其中的原因。 近年来崛起的前端三大框架 Angul
微信终端开发团队
2021-06-30
2.3K0
Android的离奇陷阱 — 设置线程优先级导致的微信卡顿惨案
Android上如果在主线程执行下面的代码: Thread t = new Thread();t.start();t.setPriority(3); 我们的预期应该是子线程t的优先级被设置为了低优先级。 但真正运行后,我们惊奇的发现,不只是子线程t,主线程的优先级同样会被设置为低优先级!事实上,这三行代码甚至导致了Android微信客户端的一次线上故障!这是为什么?背后有怎样秘密?又如何管控和避免?我们来一起深入分析、研究下这个问题。 (传送门:如果不想深入了解这其中的原理,和一波三折的故事,可以直
微信终端开发团队
2021-06-17
4.9K1
介绍一种性能较好的 Android native unwind 技术
介绍一种有点不同于目前 Android 平台上常用的 native backtrace 技术,在支持 Android ART unwind 的情况下,通过损失少数可回溯场景换取性能提升。方案有一些优势和局限性,适用于部分场景。 通常如何在 Android native 中进行栈回溯 其实 Android 上实现 native 栈回溯的方式并没有很多,罗列一下大概就两种:一种是基于函数栈帧基地址(fp=frame pointer)寄存器的栈回溯,另一种是基于异常处理(EH=Exception Handli
微信终端开发团队
2021-06-08
6.2K0
微信大终端,缺人,求贤,速来!
微信大终端开发团队又双叒叕要招人了,多个不同业务方向的项目团队都十分期待优秀的你火速加入! 微信视频号项目团队 视频号是今年初微信刚刚发布的全新功能,除了项目日常功能开发,我们还将在技术上挑战各种音视频技术。我们希望找到思维敏捷,学习能力强,能独立分析问题,解决问题的人,加入我们,一起编写一个能影响 11 亿用户的伟大产品。 WXG01-微信视频号 iOS 客户端开发工程师 工作地点:广州 岗位职责: 负责微信客户端视频号功能开发,涉及到音视频拍摄、剪辑,以及视频号的业务功能开发。 岗位要求: 1.
微信终端开发团队
2020-03-09
2K1
开源:Hardcoder——安卓APP与系统间通信解决方案
Hardcoder 的诞生 随着微信越来越复杂,性能优化变得越来越难做,优化所带来的效果提升也越来越不明显。所以我们⼀直在思考,该如何突破这个优化的极限 直到有一次与厂商的交流我们了解到,部分厂商会针对微信做一些小改动,其中比较典型的就是“暴力提频”。系统在识别到微信启动,页面切换等场景时,会粗暴地提高 CPU 频率,从而提升 APP 运行的性能。 但由于厂商无法准确判断微信场景,暴力提频效果并不理想;而如果过多地提高 CPU 频率,又对手机的功耗有影响。这一方案启发了我们,我们何不跳出软件的范畴,在手
微信终端开发团队
2019-10-10
2.6K2
你所不知道的 wechat-vfs —— 浅谈 Android 应用数据存储方案设计
一、前言 Android 应用的数据存储问题也是一个被讨论多年的老话题了,伴随 Android 从诞生到现在的 Android 10。 时至今日还有很多问题在系统侧没有被很好的解决,同大多数开发者一样,微信也遇到了很多应用存储设计问题上的困扰。 本文想借此跟大家聊聊我们遇到的问题,以及微信在存储设计上做出的一些思考和尝试。 二、微信数据存储上的问题与思考 1. 有限的内部存储 早期 Android 手机自带存储空间只有内部存储,而且空间很有限。也是因为这样的原因,应用一般要将语音、图片、视频等文件放在
微信终端开发团队
2019-10-10
3.3K1
Matrix ResourceCanary -- Activity 泄漏及Bitmap冗余检测
背景 ---- 随着微信 Android 客户端的代码规模越来越庞大,依赖人工 Review 来确保代码没有泄漏或冗余问题,虽然还是最保险的办法,但代码增长的速度总是大于 Review 的速度,完全靠人力介入变得越来越吃力,且依赖线上反馈进行事后排查也非常被动,为此我们从最为常见的 Activity 泄漏和 Bitmap 对象冗余入手提出了研发 ResourceCanary 模块的计划。 作为 Matrix 的一个子模块,ResourceCanary 将把原本难以发现的 Activity 泄漏和重复创建的
微信终端开发团队
2018-12-28
3.4K1
Kotlin-Android的另一番风味
微信 订阅号助手 的Android App项目首次尝试使用Kotlin进行大规模的业务开发(483个Kt文件,3.8W行不包含空行的Kt代码),一开始接触Kotlin的时候难免会有点不适应,但经过几天的强制使用后,慢慢有些感觉,项目落地后回顾了一下,发现Kotlin确实是有它独特的风味 烹饪准备 食材 Android,主要食材(指Framework、Api等), Kotlin,食用安全、味鲜(扩展函数)、香(重载)、甜(富含糖份Lambda),第二主要食材,切好块状 Java,少量,Kotlin这种食材需
微信终端开发团队
2018-11-02
10K0
MMKV for Android 多进程设计与实现
MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今,在 iOS 微信上使用已有近 3 年,其性能和稳定性经过了时间的验证。近期已移植到 Android 平台。在腾讯内部开源半年之后,得到公司内部团队的广泛应用和一致好评。现在一并对外开源:  https://github.com/tencent/mmkv 欢迎 Star、提 Issue 和 PR。 前言 MMKV 的源起、设计原理与具体实现参
微信终端开发团队
2018-10-12
5.9K0
MMKV 组件现在开源了
MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今,在 iOS 微信上使用已有近 3 年,其性能和稳定性经过了时间的验证。近期已移植到 Android 平台。在腾讯内部开源半年之后,得到公司内部团队的广泛应用和一致好评。现在一并对外开源:  https://github.com/tencent/mmkv 欢迎 Star、提 Issue 和 PR。 MMKV 源起 在微信客户端的日常运营中,时
微信终端开发团队
2018-10-12
3.7K1
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档