240 发简信
IP属地:浙江
  • 120
    dlopen failed与so的命名空间

    之前的Android热更新实践[https://www.jianshu.com/p/7cf0f1419498]里面使用替换默认ClassLoader的方式实现了热修复,但偶然...

  • 120
    HDMI简单入门

    最近做的音视频项目里面需要深入到hdmi的硬件实现去定位问题,于是大概学习了一下hdmi的硬件知识,这里总结下做个简单入门。 hdmi是啥我就不说了直接看看它的针脚定义,后面...

  • 安卓RRO机制

    年前和组内的小伙伴讨论过一个需求的RRO实现方案。我其实之前对RRO也只是处于大概了解的程度,并没有实际去操作过,趁着过年这段时间有空也写了个demo实际验证了下。 由于官方...

  • Binder请求处理流程探究

    前段时间遇到个蛮有意思的bug,趁着春节有空刨根问底记录下来。 背景是我们有个调试工具运行在安卓机器上用于局域网内远程调试机器,其实就是用nanohttpd[https://...

  • 120
    Windows Dump文件分析

    dump文件获取 Windows上处理程序crash的问题可以通过分析dump文件来定位问题。那怎么拿到dump文件呢?有几种方式可以获取。 注册表配置dump文件生成目录 ...

  • Android PackageCache 机制

    今天突然接到bug说系统ota之后必现无法使用并且重启无法恢复,从日志上看个上个月往项目里面导入了热更新[https://www.jianshu.com/p/7cf0f141...

  • 再探C++自动注册

    最近的c++项目里面需要使用配置文件配置的值去决定运行时具体实例化的类。如果是java或者kotlin直接使用反射去创建就好,但是c++里没有类似的东西所以只能通过一些取巧的...

  • 120
    Android热更新实践

    前段时间一个小工具使用往ClassLoader的DexPathList的Element数组前面插入热修复dex[https://blog.islinjw.cn/2023/09...

  • mockk使用入门

    为了方便讲解我们写了一个小工具,支持把java的链式调用代码入去执行,它的核心调用逻辑如下: 假设我们我们实现上面三行代码的功能,可以先写一个最简单的解析调用空参数列表方法的...

  • 120
    Android进程冻结机制

    奇怪的ANR 今天遇到了个很有意思的anr问题, 应用出现了anr: 但是trace文件里面没有任何堆栈: 从日志上过滤进程pid可以看到正在正常的执行任务,还没有执行完就被...

  • ClassLoader类加载流程补充

    之前写过一篇ClassLoader的笔记[https://www.jianshu.com/p/17e79728a788]介绍了如何用ClassLoader去加载外部dex包,...

  • 120
    Windows调试技巧案例-ffmpeg&wave播放音频卡死问题

    最近在windows上开发音视频,遇到了读流卡死的问题.定位过程中学到了一些Windows上的程序调试技巧,这里记录一下。 WinDbg查看线程堆栈 最近的这个项目使用ffm...

  • 120
    Windows发送模拟按键的坑

    最近支援C++兄弟的项目里面有在windows下发送模拟按键的需求,整个功能做下来发现了不少的坑,这里记录下来。 首先Windows上发送模拟按键可以用SendInput[h...

  • TextureView清除摄像头最后一帧画面的原理探究

    最近协助一个摄像头相关的项目遇到了一个有意思的问题,这里记录一下。 原问题大概是使用TextureView预览摄像头,关闭摄像头之后画面会残留最后一帧,需要把他清除。我一开始...

  • 的确不对,看了下用错surface拿Timestamp了,已经修改代码再pull一下修复

    安卓特效相机(四) 视频录制

    系列文章: 安卓特效相机(一) Camera2的使用安卓特效相机(二) EGL基础安卓特效相机(三) OpenGL ES 特效渲染安卓特效相机(四) 视频录制 前几篇文章已经...

  • C++ pimpl与unique_ptr

    最近协助c++组的项目时使用unique_ptr实现pimpl遇到了个编译问题,虽然比较初级但其原理也挺有意思的,这里记录一下。 简化后的代码如下: 编译之后出现下面的err...

  • 安卓动态代理

    动态代理在java里面算是一种比常用的技术,它和静态代理的区别在于静态代理需在编译的时候代理类就已经确定了,而动态代理的代理类是在运行的时候动态生成的。 例如使用retrof...

  • 安卓存储权限原理

    上篇博客[https://www.jianshu.com/p/bf61f559f331]介绍了FileProvider是如何跨应用访问文件的。这篇博客我们来讲讲安卓是如何控制...

  • FileProvider的一些事

    高版本的android对文件权限的管控抓的很严格,理论上两个应用之间的文件传递现在都应该是用FileProvider去实现,这篇博客来一起了解下它的实现原理。 首先我们要明确...

个人介绍
有趣的东西那么多,为什么不去学呢?

个人博客: blog.islinjw.cn