Android Native内存泄漏检测方案详解

本文将分三个部分阐述如何实现 Android Native 内存泄漏监控,包括代理实现的三种方案(Inline Hook、PLT/GOT Hook、LD_PRELOAD)及其优缺点,以及如何检测Native内存泄露和获取Android Native堆栈的方法。本文将提供一套比较全面的解决思路,帮助大家更好地检测 Android Native 内存泄漏问题。

4月前 1613次阅读 阅读全文 »

最佳实践|一文讲解端线程死循环的治理

本文旨在介绍钉钉 Android 团队死循环检测工具建设的思路和典型案例的修复历程。希望通过此次分享,对同样面临类似死循环问题的团队能够有所启发。

8月前 2695次阅读 阅读全文 »

frida入门使用介绍

frida是android逆向分析最常用的工具之一,其是一种hook框架,可以在不改动目标源码的情况下,动态查看函数运行入参,返回值,注入代码,更改程序逻辑等,使得android逆向人员能够快速掌握一些问题的本质。本文将带大家了解各种frida的使用方法以及其中的一些坑。

8月前 4233次阅读 阅读全文 »

基于devfreq framework的GPU调频

AI时代已经来临,在日益增长的算力需求下,GPU已经成为AI世界不可或缺的工具,而移动端高渲染高帧应用也对移动端GPU提出越来越高的要求,本文将以高通的adreno gpu为例对GPU的调频进行介绍。

8月前 2590次阅读 阅读全文 »

OpenGL 计算着色器(Compute Shader )你用过吗?

Compute Shader 是 OpenGL ES(以及 OpenGL )中的一种 Shader 程序类型,用于在GPU上执行通用计算任务。

9月前 2854次阅读 阅读全文 »

Android Clear架构最强官方指南Kotlin版

在这篇文章中,我将介绍关于Android应用程序架构的一些内容。尽管自从早期更稳健的Android架构方法在移动开发中变得流行以来已经说了很多话,但改进和演进的空间总是存在的。

9月前 2693次阅读 阅读全文 »

Flutter抓包绕过

最近工作上让做个app的复测,把apk发我后,开始尝试挂代理抓包,结果发现抓不到。分析后发现是使用Flutter开发的。

9月前 2638次阅读 阅读全文 »

Android 逆向:最近大火的 ChatGPT 客户端是如何实现的?

这两天在 B 站刷视频,看到了 ChatGPT 新出的语音对话,非常惊叹。不得不说,OpenAI 不出手则已,一出手则一鸣惊人。那我作为一个 Android 学习者,却也不免想到了一个别的问题:作为新的 App,ChatGPT 的 Android 端是用什么写的呢?

10月前 3046次阅读 阅读全文 »

企业微信大型Android系统重构之路

企业微信本地部署版(下文简称为本地版)是从2017年起,脱胎于企业微信的一款产品。本地版的后台服务能独立部署在政府或者大型企业的本地服务器上。在一个已经迭代了7年的大型Android系统中,企业微信本地版不可避免地会暴露出一些遗留系统的特点。本文将探讨我们在实践中采用的一些行之有效的重构案例,以及如何让一个大型软件系统持续保持活力。

10月前 2843次阅读 阅读全文 »

OpenGL ES 如何实现图像锐化?

图像锐化是一种图像处理技术,其目的是增强图像中的细节和边缘,使图像看起来更加清晰。这一过程通常涉及到突出图像中的高频信息,特别是强调像素之间的灰度变化。

10月前 2897次阅读 阅读全文 »

Flutter-Web从0到部署上线(实践+埋坑)

Flutter 的诞生虽然来自 Google 的 Chrome 团队,但大家都知道 Flutter 最先支持的平台是 Android 和 iOS。不过由于 Flutter 本身就是携带了 web 的基因,在 Flutter2 发布的同时也发布了 web 的稳定版。那么它有什么优势和劣势呢?

10月前 3349次阅读 阅读全文 »

关于 OpenGL 的渲染上下文

OpenGL 的上下文(OpenGL context)是一个 OpenGL 绘图环境的抽象概念,它包括了所有 OpenGL 状态信息和资源,以便OpenGL能够正确地渲染图形。

1年前 3762次阅读 阅读全文 »

当你需要读一个 47M 的 JSON 文件

大文件的读写,咱还是老老实实用字节码文件存储吧。小文件可以使用 Json,反序列化速度够用,可读性也可以有明显的提升。

1年前 3013次阅读 阅读全文 »

使用 MediaCodec 将图片集编码为视频

这是MediaCodeC系列的第三章,主题是如何使用MediaCodeC将图片集编码为视频文件。在Android多媒体的处理上,MediaCodeC是一套非常有用的API。

1年前 2920次阅读 阅读全文 »

转转Flutter实践之路

从 Flutter 诞生之初,我们就一直关注着它的发展,Flutter 早期版本变更较为频繁,并且经常伴随着 Breaking Change,另外可用的三方插件较少且不稳定。直到2019年,Flutter 的热度暴涨,国内不少团队陆续把 Flutter 引入到了生产环境使用,社区也涌现出不少优秀的开源项目,我们也决定在这个时候做一些技术上的尝试。

1年前 2727次阅读 阅读全文 »

Android 对 so 进行简单 hook

Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。

1年前 3238次阅读 阅读全文 »

编译优化在微信视频号的落地实践

编译优化是通过编译技术获得性能提升的一类性能优化方法,它具有通用性和可持续性强的优势,一次投入后可长期保持稳定的优化效果,可以有效降低性能优化的成本。

1年前 2945次阅读 阅读全文 »

基于 Android 的文件同步设计方案

随着用户对自身数据保护意识的加强,让用户自己维护自己的数据也成了独立开发产品时的一个卖点。若只针对少量的文件进行同步,则实现起来比较简单。当针对一个多层级目录同步时,情况就复杂多了。鉴于相关的文章甚少,本文我分享下我的设计思路。

1年前 2807次阅读 阅读全文 »

深入理解 Android Window系统

Android中的窗口系统是应用程序用户界面的核心组件之一,它负责管理可视化区域、处理用户输入事件以及与系统UI交互。本文将深入介绍与Android窗口系统相关的重要概念,包括不同类型的窗口、创建窗口、窗口的特性和标志、生命周期以及如何创建自定义窗口。让我们开始吧!

1年前 2958次阅读 阅读全文 »

Android c++ core guideline checker 应用

本文作者是蚂蚁集团客户端工程师希德,教会你如何在 Android c++ 项目中应用 c++ core guideline checker,以统一最佳编码风格,提高代码的可读性和可维护性,提升 c++ 代码安全性、运行效率。

1年前 3080次阅读 阅读全文 »

动态修改VersionName和VersionCode

本文通过BuildType、Property、Variants三种方式介绍了动态修改VersionCode和VersionName的方法,但是他们的时机却有不同。

1年前 2841次阅读 阅读全文 »

Android 图形系统之 SurfaceTexture

SurfaceTexture是离屏渲染和TextureView的核心,内部包含了一个BufferQueue,可以把Surface生成的图像流,转换为纹理,供业务方进一步加工使用。

1年前 3183次阅读 阅读全文 »

多个AAR打包成一个AAR

公司日常开发基于自建的Maven服务器,不对外开放,公司内开发的SDK都传到私服,经过这么多年的迭代已经有上百个包,前段时间有其他公司需要依赖内部某个SDK,而这个SDK有依赖了公司好多SDK,但是公司内网权限无法对外开放,所以无法使用Maven方式对外提供依赖,如果基于AAR方式,对外提供十几个AAR不仅不友好,而且内部也不好维护迭代。

1年前 3288次阅读 阅读全文 »

Flutter项目快速搭建指南

笔者在这之前已经有一年时间没有接触过flutter项目的开发了,目前由于新项目的需要,要重新开始搭建一个flutter项目。让我感到惊讶的是,flutter经历了多年的发展,生态真的越来越完善了,很多之前开发中遇到痛点问题都得到了很好的解决,开发体验倍增。下面我就分享一下这次flutter新项目搭建的经验,主要包括网络请求、数据持久化存储、路由、多机型屏幕适配、闪屏页配置、状态管理、widget生命周期、Key的使用等方面的内容。

1年前 4714次阅读 阅读全文 »

OpenGL ES 实验室之 2D 篇 第三弹 の 直播白板

直播白板应用在搜狐视频App直播,配合播主的教学,在白板上展示英语、物理、历史等图片或者手绘文字。更加生动且有趣的进行讲解,并且还可以在助手App使用 PPT 等准备好的教材,让直播内容更加便捷,且素材丰富。助手还提供了大白板和小白板的切换来展示不同白板的效果,更充分和自由的展示白板,也让观众可以学习更多的知识。

1年前 3730次阅读 阅读全文 »

钉钉 Android 端功耗优化最佳实践

钉钉作为亿级企业数字化平台,高效即时沟通是核心能力之一,消息即时触达以及后台功耗一直是 Android 端核心体验,随着业务快速的发展,越来越多的消息信令通过钉钉自有的长连接通道推送到客户端,同时手机续航也是用户和手机厂商关心的核心体验之一。

1年前 5239次阅读 阅读全文 »

政采云 Flutter 单元测试实践

从最初的探索,再到现在的团队成员共同完善 Flutter 单元测试,期间踩了不少坑也积累了不少经验,现将这些内容分享出来,希望能给对 Flutter 单元测试感兴趣的同学带来一些帮助。

1年前 3386次阅读 阅读全文 »

Android包体积优化方案-动态资源管理系统

动态资源管理系统是货拉拉目前使用的用于管理离线so、动画资源、字体文件的组件,对于减小包体积起着重要作用。

1年前 4439次阅读 阅读全文 »

Android 干货分享:插件化换肤原理

1年前 5748次阅读 阅读全文 »

Android开机全解析

1年前 9391次阅读 阅读全文 »