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

微信终端开发团队的专栏

专栏作者
111
文章
432513
阅读量
510
订阅数
五年沉淀,微信全平台终端数据库WCDB迎来重大升级!
WCDB 是微信团队开源的一款基于 SQLite 的终端数据库。自 2017 年 6 月开源以来,它在业界得到了广泛认可并被大量应用,迄今已经推出了十多个版本。在这个过程中,WCDB 一直保持良好的向后兼容性,不断完善原有接口的细节并添加新功能。
微信终端开发团队
2024-04-09
3500
从入门到精通:如何解决C++模板代码膨胀问题?
除了显而易见的减少实例化类型的数量(实际业务场景下其实大部分减不了),「本文主要是提供适用于一些具体场景、可实际操作的优化策略以减少C++模板代码的大小。」
微信终端开发团队
2024-02-21
2040
Android微信客户端是如何支持R8构建的?
作者:chrispaul,来自微信客户端团队 背景 在之前的版本,微信Android一直采用Proguard构建Release包,主要原因在于: Proguard优化足够稳定 ApplyMapping也能保证正确性 与AutoDex搭配使用,生成足够小的Tinker Patch。 但Proguard也有明显的不足之处: Kotlin版本的升级与Proguard存在不兼容,导致被迫升级Proguard版本; Proguard版本升级导致编译时间变慢,超过30min; 由于历史原因,一些keep规则导致包大小无
微信终端开发团队
2023-05-12
1.7K0
iOS微信内存监控
FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀。对用户而言,表现跟crash一样。Facebook早在2015年8月提出FOOM检测办法,大致原理是排除各种情况后,剩余的情况是FOOM,具体链接:https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/。 微信自15年年底上线FOOM上报,从最初数据来看,每天FOOM次数与登录用户数
微信终端开发团队
2023-02-20
1.3K0
微信全文搜索优化之路
本文首次发表在《程序员》杂志 2017 年 09 月期。 前言 ---- 基于本地数据的全文搜索(Full-Text-Search,FTS)在移动应用上扮演着重要的角色。与基于服务端提供的搜索服务不同,移动端受硬件条件限制,尤其在数据量相对较大的情况下,搜索性能问题表现得十分突出。本文以移动平台广泛采用的SQLite FTS Extension为例,介绍了移动平台FTS的基本原理,结合微信安卓客户端自身实践,重点讲述微信在FTS上的一些性能优化经验。 SQLite FTS Extension ---- SQ
微信终端开发团队
2023-02-20
1.4K0
实时移动通信中基于时空域联合约束的低照度视频增强技术研究
视频通话是微信的基础功能之一,在实际应用中受光照条件及视频采集设备能力所限,视频发暗是影响主观体验的重要因素。我们尝试改进这个问题,欢迎留言交流:) 该项工作的主要成果发表在ISCAS 2017国际会议上。("Low-Lighting Video Enhancement Using Constrained Spatial-Temporal Model for Real-Time Mobile Communication", ISCAS, pp:595-598, Baltimore, MD, USA, 201
微信终端开发团队
2023-02-20
5390
微信终端跨平台组件 Mars 系列(三)连接超时与IP&Port排序
号外号外!微信 Mars 已于2016年12月28号的微信公开课上,正式公开了源代码,加入了开源阵营。相信很多小伙伴已经看到了 Mars 的代码,在这里热切的期望小伙伴们多给 Mars 提pr & Issues,共同促进移动网络技术的发展。开源只是一个开始,我们也将继续在 WeMobileDev 的公众号上,分享 Mars 的技术细节与未来规划。 前言 Mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务无关、跨平台的基础组件。目前在微信 Android、iOS、Windows、Mac、WP
微信终端开发团队
2023-02-20
6110
微信终端跨平台组件 mars 系列(二) - 信令传输超时设计
前言 mars 是微信官方使用 C++ 编写的业务性无关、平台性无关的终端基础组件,目前在微信 Android、iOS、Windows、Mac、Windows Phone 等多个平台中使用,并正在筹备开源,它主要包含以下几个独立的部分: COMM:基础库,包括 socket、线程、消息队列、协程等基础工具; XLOG:通用日志模块,充分考虑移动终端的特点,提供高性能、高可用、安全性、容错性的日志功能;(详情点击:高性能日志模块xlog ) SDT:网络诊断模块; STN:信令传输网络模块,负责终端与服务器的
微信终端开发团队
2023-02-20
6240
微信Mars:客户端跨平台组件的开发经验
4G,甚至是未来的5G,移动网络正在快速发展,但这并不意味着网络库不再重要。Mars源于微信的业务需要,结合移动互联网的不稳定特性,做了大量的优化工作,并且这些优化都是经过了微信长时间的验证和使用的。 12月9日,在中国技术开放日广州站,我们将为大家带来Mars的详细介绍。本次大会完全免费,欢迎有兴趣的小伙伴们报名。 12月9日,由InfoQ主办的中国技术开放日广州站将在广州四季酒店举行(欢迎广州的同学免费报名参加,报名地址见文末阅读原文)。我们邀请了来自腾讯、阿里、百度、唯品会的技术专家前来分享一线移动开
微信终端开发团队
2023-02-20
1.7K0
Windows微信:消息数据库架构演进
作者:Jon,来自微信客户端团队 前言 本文基于微信用户日常使用场景 & 数据分析,「通过分离重要 / 非重要数据、采用可靠的分库策略等」,对微信数据库架构进行优化 & 改造,并最终得到一个具备实践良好效果的改造方案。 背景说明 微信 for Windows自2014年上线以来,用户数稳步增长。随着时间的不断推移,用户积攒的消息量越来越大。最初的数据库设计秉着「遵循简单易用,方便管理」的原则,把用户收到的所有消息都统一存放在用户当前客户端本地的「同一个数据文件中。」 (注:微信不会保存聊天记录,聊天内容只
微信终端开发团队
2022-08-31
1.5K0
无障碍功能框架:如何让残疾/老龄群体更好使用微信?
作者:nalecyxu 简介:微信客户端Android团队,负责无障碍功能框架开发。 前言 为了帮助老年人、残疾人(视障/听障人群等)更好地使用微信App,Android微信完成了适老化及无障碍改造。本文主要介绍「Android根据适老化及无障碍需求 完成的一个协助业务侧进行无障碍功能开发的框架」,主要包括: 需求说明 框架简介 基础知识 整体流程 执行原理 核心说明 走查工具 框架需求 本框架主要具备以下特性: 可感知性 包括大字体适配,颜色对比度等 可操作性 主要是过小热区的放大,提高老年人/残疾人的交
微信终端开发团队
2022-03-29
1.5K0
iOS微信全文搜索技术优化
一、iOS微信全文搜索技术的现状 全文搜索是使用倒排索引进行搜索的一种搜索方式。倒排索引也称为反向索引,是指对输入的内容中的每个Token建立一个索引,索引中保存了这个Token在内容中的具体位置。全文搜索技术主要应用在对大量文本内容进行搜索的场景。 微信终端涉及到大量文本搜索的业务场景主要包括联系人、聊天记录、收藏的搜索。这些搜索功能从2014年上线至今,已经多年没有更新底层搜索技术,聊天记录使用的全文搜索引擎还是SQLite FTS3,而现在已经有SQLite FTS5,收藏首页的搜索还是使用简单的Li
微信终端开发团队
2022-02-23
2.1K0
微信Android增量Proguard方案
背景 随着业务的快速发展,Release构建速度问题不断凸显,从2020年底构建50min到如今接近1h30min的构建时长,其中Proguard阶段耗时占用了接近40%, 时刻影响着工作效率。在整个Release构建耗时链路上,业界优化方案众多,并起到了一定的优化效果。然而我们另辟蹊径,自研一套Inc-Proguard方案,解决了无法增量Proguard问题,实现将耗时降低到分钟级别。 问题出在哪? 目前Android微信采用模块化的Gradle构建方式,也是业界普遍采用的一种方式。大致构建流程如下:
微信终端开发团队
2022-01-26
2.2K1
基于Web内核的微信小程序框架实践
背景 在正式进入分享之前,简单介绍一下做这个小程序新框架的背景思路,主要目的有以下几点: 新框架和微信的主客户端解耦,能够独立运行,并且可以同时支持小程序和小游戏。 新框架能去拥抱更多的Web特性,深入到Chromium内核中,去支持更多平台。 还有一个目的就是,通过新框架去拓宽小程序生态的边界,能够在许多非移动端设备,提供微信小程序生态。 ---- 1 小程序和PWA 首先来了解一下小程序和PWA,可以说小程序设计之初,还是吸收了很多Web特性,这也使得小程序和PWA应用的用户体验很接近,包括技术
微信终端开发团队
2022-01-17
2.3K1
手把手教你从零开始实现C++协程
简介 在上一篇文章 《微信终端自研C++协程框架的设计与实现》 中,我们介绍了异步编程的演化过程和 owl 协程的整体设计思路,因篇幅所限,上文中并没有深入到协程的具体实现细节。用 C++ 实现有栈协程,核心在于实现协程上下文切换,在 owl 协程的整体架构中,owl.context 位于最底层,所有上层 API 全部基于这一层来实现: 本文将详细讲解 C++ 协程上下文切换的底层原理,手把手教你从零开始实现 C++ 协程。 owl.context 接口设计 业界比较有名的上下文切换库有 uconte
微信终端开发团队
2021-12-10
3.1K0
微信终端自研C++协程框架的设计与实现
背景 基于跨平台考虑,微信终端很多基础组件使用 C++ 编写,随着业务越来越复杂,传统异步编程模型已经无法满足业务需要。Modern C++ 虽然一直在改进,但一直没有统一编程模型,为了提升开发效率,改善代码质量,我们自研了一套 C++ 协程框架 owl,用于为所有基础组件提供统一的编程模型。 owl 协程框架目前主要应用于 C++ 跨平台微信客户端内核(Alita),Alita 的业务逻辑部分全部用协程实现,相比传统异步编程模型,至少减少了 50% 代码量。Alita 目前已经应用于儿童手表微信、Lin
微信终端开发团队
2021-10-21
2K0
企业微信超大型工程-跨全平台UI框架最佳实践
一. 背景 企业微信的跨平台之路 企业微信作为跨android、ios、mac、pc、web五个端,超千万行代码的超大型工程,每一个需求迭代周期,都需要5端同步开发、发版,不管是对于开发,还是产品、设计、测试来说,都是一个巨大的挑战。 企业微信初期架构设计上就将底层网络、db以及大部分业务逻辑都抽离到c++实现,以供多平台复用。但是UI还是各平台独自处理,从开发的角度来看,移动端的android、ios,电脑端的mac、pc,同样的界面布局,却需要写两套逻辑代码,因此,ui的跨平台诉求是我们的一大痛点
微信终端开发团队
2021-09-23
3.7K0
线程:“你可能把握不住”—— Android 平台下线程导致的内存问题
看了 《Android 的离奇陷阱 — 设置线程优先级导致的微信卡顿惨案》这篇文章,有没有觉得原来大家再熟悉不过的线程,也还有鲜为人知的坑?除此之外,微信与线程之间还有很多不得不说的故事,下面跟大家分享一下线程还会导致什么样的内存问题。 [anon:thread stack guard page] 在分析虚拟内存空间耗尽导致的 crash 问题时,我们在 /proc/[pid]/maps 中发现了新增了不少跟以往不一样 case,内存中充满了大量这样的块: 从 map entry 的名字与内存大小和权
微信终端开发团队
2021-09-08
3.8K0
震惊!耗时还能这么优化??
0.文末为懒人版本 1.背景介绍    在视频号项目中,允许用户上传一分钟内的编辑视频,或者选择30min内的长视频。目前来看,整个发表(视频转码+上传)的耗时还略显偏久,虽然当下转码过程都是在手机后台运行,不会阻塞用户交互,但是由于视频未发表成功,视频点赞和转发功能都被限制,对用户和业务而言,这都是很不好的体验,有值得优化的必要。 1.1分析:耗时来源 整个耗时 = 视频转码耗时 + 上传耗时 目前上传的时间取决于用户网络,这个不是本文讨论的重点,先暂时不予考虑。 那么为什么我们需要对视频进行转码呢
微信终端开发团队
2021-08-26
5.2K0
微信跨平台硬件直播组件
     听说微信视频号前阵子又上(gao)新(shi)啦,悄悄告诉你,手机外的硬件设备也能通过微信视频号直播啦,利用专业的设备提供第一视角的直播体验。       下面我们来跟大家介绍下这个功能背后关于技(jia)术(ban)的故事。为了实现这一功能,我们的产品说很简单啊,你们搞个SDK,然后啪一声给到接入方,他调用你的接口开播,把音视频数据给你,你推到微信后台,然后从微信后台拉回直播间数据展示出来就可以了。听起来好像没什么毛病,接下来我们就来说说这个实现起来有多简单。 技术路线背景       首先
微信终端开发团队
2021-08-11
2.8K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档