记一次Android依赖库版本不兼容的问题处理过程

此前我们项目组开发了相关 SDK 并集成到 App 工程中进行测试,发现业务App中的 wire (一个与 protobuf 相关的库),版本为1.5.1,而 SDK 中所依赖的版本为3.7.0,两者之间相互不兼容。如果要让业务升级到高版本的库的话,初步排查低版本中使用的某个类而高版本中已废除,单纯的就这一个类涉及100多个文件,工程量太大了,SDK中亦然。所以不能通过简单地更改版本号来解决版本冲突问题,最后经过一系列的尝试,终于解决了该问题。

阅读全文

Android 视频抽帧

要对移动端的抽帧,对于 iOS 来说,有 AVFoundation 这样一个神奇的库,开箱即用,已经支持了抽帧并且效率非常的高。而 Android 就不那么乐观了,Android 自带的 MediaMetadataRetriever 也能实现抽帧并将帧数据转化为 Bitmap,但效率非常低,平均抽取一帧需要 200ms-300ms,这当然满足不了我们的需求。无独有偶,Android 还提供了另一个类 MediaCodec-用于对音视频进行编解码的类,它通过访问底层的 codec 来实现编解码的功能,我们能对解码的数据进行定制化处理,本文也主要讲解利用 MediaCodec 进行抽帧。

阅读全文

快捷-Mac桌面adb push小工具

最近在Android开发过程中会遇到很多传文件的操作,市面上也有比较多的“文件管理器”,例如锤子的HandShaker,或者谷歌官方的filetransfer,但他们都需要打开“传输文件”这个行为,个人感觉比较繁琐。作为Android开发,使用adb命令行去传输文件是不错的,但每次输入adb push xxx还是挺麻烦,而且必须打开 Terminal 才能运行。为了让所有操作更简化,我做了一个简单的桌面工具,只需要连上手机,正常打开adb,拖到文件到对应区域,则可以实现文件传输。

阅读全文

Android音视频-初识FFmpeg

已经很久没有写过技术博客了,这段时间加入了新公司,主要时间花在熟悉新业务的技术上。而新的业务主要跟音视频相关,关于音视频的尝试在加入新公司之前,自己有做相关demo的尝试与学习,可以参看音视频相关学习demo。当然,那都是自己“想当然”学习的一些东西,虽然实际工作中并没有派上太大的用处,但让我对音视频相关的基础知识有了一定的概念,对后面的技术尝试做了铺垫。第一个技术挑战比较大的就是进行:视频抽帧,关于视频抽帧网上有很多很多文章进行讲解,但……我始终没有找到一个效率很高的解决方案。直到我遇见了 ffmpeg,仿佛打开了新世界的大门……

阅读全文

记一段 Android 面试时光

今晚已到下班时间,我又如往常一样,背着自己的包来到了楼下的会议室。不过与前些天的日子不太一样,今天我已经放下了诸多包袱,剩下的是一个轻松的自己,历经一个月的面试时光,终于可以在这会议室惬然地写下一些东西。

准备面试以及参加面试都是一个高度紧张的过程,为了面试,我放弃了一些时间,也让自己每天变得很疲惫,因而有更少的精力去干一些其他事情。在六月,我还未完成一本书的阅读,时间忙碌所占去,或者那个疲惫的身体没有能静得下心来阅读一本书籍,我好希望能够有一个轻轻松松的时间,能够做自己想做的事。但在诸多现实面前,不得不低下头吧,好在现在收获的Offer也能对得起自己的付出,遂想记录一下这一个月来自己的面试经历。

阅读全文