抖音卡图为哪般?

抖音,“记录美好生活”。名字取得好,广告语也很鼓舞人。

其实,记录美好生活的方式有很多种。雕刻家用刀,画家用画笔,作家用文字...。而在抖音眼里,这些方式都太原始了。抖音使用最现代的方式来记录生活。用先进的摄像技术直接拍摄生活,用先进的音视频技术快速把立体的世界压扁掳直,串行化成一个数据流,然后用先进的互联网技术传递给全世界。这种方式太快速了,太强大了,太直接了,有时也太暴漏了。

抖音的方式太迷人了,太有诱惑力了,于是乎,山川世界,人情世故,三教九流,千业百行,大千世界无不在抖音之中了。

我手机上安装了抖音,但是我不常打开。因为抖音的方式太喧闹了,太声张了,一旦打开,旁边的同事就会知道(^_^)。

最近我做了一场关于安卓调试的直播(用的仍是微信和腾讯会议,不是抖音),名为《安卓调试新纪元》,介绍了如何把各种安卓应用安装到幽兰的Waydroid容器里,然后以上帝视角审视它们,用gdb看它们的每个字节。

7bfb821d0433bd6cf201cbbba361a1cb.png

同时,我还建了一个“安卓调试”微信群,旨在与业界同行交流安卓调试技术。

安卓和抖音有什么关系呢?

“安卓调试”群刚建立,就有同行来证明它们的关系。先是有悲观倾向的思想者发出深沉的忧患:“幽兰本能通过抖音,小红书这些APP的风险检测吗?”

这是担心抖音等App会检测运行环境,不能在Waydroid里运行。

对于经验丰富的程序员来说,有一些“忧患意思”无可厚非。但是接下来更有主观臆断者直接断言:“并不能”

df2b84aa20b719b4519a27bb76d2a70f.jpeg

软件世界纷繁复杂,各种代码纵横交错的缠绕在一起,各种技术问题和非技术问题作用在里面,所有人世的善与恶,美与丑无不也表现在软件世界里。

但是无论软件如何复杂,作为软件技术的从业者来说,最重要的就是“实事求是”,重视数据。遇到不确定的问题,要观察,要搜集数据,不可以妄下结论。

上面的发言发生在3月9日,上周六的晚上。当天晚上,我有直播课,讲UEFI,我是在直播课即将开始的时候,看到了主观臆断者的发言,为了不影响讲课,我选择暂时忽略。

UEFI的课程从2024年1月初开始,跨越春节,历时2个多月,上周六是最后一次课。课程结束后,我感觉轻松了很多。

休息一会后,我想起了安卓调试群里的发言。我再次看屏幕上的对话。这样的主观臆断发言严重违背我一致主张的格物思想。一番思考后,我决定将这个人请出“安卓调试”群。我是很少这么做的,但是要让一个技术讨论群保持健康,这又是必要的。

接下来,我想实际调查一下这个问题。下载抖音APP的安装包(APK文件),双击安装文件,过一会那个熟悉的图标出现在幽兰桌面上了。

7cf0ef90f16e23e02f342f9e77489015.png

点击抖音App的图标,启动它,第一次启动有些慢,几秒钟后,抖音的界面出现了,不过画面倒了 。

我把幽兰的屏幕立起来,拍了个照片,“记录美好生活”。

af662223a3098878b7e19ce61579a7d3.jpeg

因为手机的屏幕大多是细高的,长边是垂直的,而幽兰的屏幕是“矮胖的”,长边是水平的,这可能导致了抖音APP的画面“卧倒”了。

但这个问题好解决,只要调整一下Waydroid的屏幕设置就可以了。

b59e1948f881836e62cc7dba1c9f41f3.png


不过,我很快发现一个更大的问题,与在手机上打开抖音APP时火辣画面炫动扑来不同,眼前的抖音视频窗口是静止的,凝固不动,始终卡在一个画面,我把这个问题简称为“抖音卡图”。

周一上班后,我安排一个格蠹同事Alex调查抖音“卡图”的问题。

Alex首先在他的幽兰上复现了问题。

周三时,Alex发我一个截图,是抖音运行时的安卓日志,里面有一些错误信息。

ca74ba1dacb3734a3a2ca6587f9f3862.png

周三下午,Alex又发我一个截图,也是安卓的日志,里面又包含了一些错误信息,包括一个Java异常。

fda6cd2d8278d4c523d4a960eb87d2b9.png

同时,Alex有一个重大的发现,那就是B站APP可以流畅地播放视频。为什么说这个发现比较重大呢,因为Alex觉得,B站的APP和抖音有相似性,既然B站APP能在同样的环境里顺利工作,那么就不是环境问题了,就是抖音APP的问题。

对于这样的程序员理论,我首先表示理解,然后立刻又从产品经理的角度及时纠正:“用户想要抖音,我们就需要让抖音能工作,不能说服用户放弃抖音,改用B站...”。

刚好当天晚上,我又有一个关于安卓调试的直播,在直播中,我演示了如何调试B站的APP。演示时,B站的音视频确实都很流畅。

周五早上,Alex把注意力转移到显存问题上。他的理论是:“可能就是抖音用的(显存)比较多,加上没有多的显存了?”

提到显存,很多程序员的大脑里都会涌出一大堆信息,A卡,N卡,GDDR,等等。

可是这些术语大多都是PC时代的,在今天的手机时代里,它们还适用么?格蠹的办公室里闲置着好几块巨大的独立显卡,个头比砖头还大,工作起来比抖音还响,功耗也大的惊人。功耗大不只是费多少电的问题,更大的风险是导致整台电脑开不了机。就在前几周,盛格塾编辑用的一台装有独立显卡的台式机突然黑屏,再也开不了机了。

其实,今天的移动GPU大多都是与CPU共用内存,不需要独立的闪存。

为了追查闪存问题,Alex打开了GPU内核驱动的调试信息,追查一番,得到的一个结论是抖音工作时,GPU内核驱动会有大量输出。但是这些输出信息都是辅助调试的,没有什么意外的情况。

周五快下班时,我决定亲自看一下抖音卡图的问题。

打开幽兰,启动抖音,复现问题。

这一次,抖音的窗口有所不同,视频区域是黑的。

f3df4036ac35d5ae5cb561d34938f927.png
    

有趣的是,虽然抖音的画面看不见,但是声音却是正常的,一位会生活的人在讲“婆婆丁”。婆婆丁是什么呢?就是蒲公英的幼苗。

我一边听主播讲婆婆丁,一边思考为何抖音的画面出不来,而声音能出来。难道是因为这才把名字叫“抖音”,而不叫“抖图”?

不管怎么样,抖音的音频处理和播放能力更鲁棒一些。

相对而言,抖音的图像处理和播放能力有点“婆婆丁”,哦,不是“婆婆丁”.......

图像为什么出不来呢?是因为做了太多美颜?那应该是在主播那边啊。

一边想,我一边下意识的打开了top,以上帝视角看安卓和抖音的世界。

96a095f7dc835f16608814509ec9f980.png

凝视top,在列表中找到抖音APP:droid.ugc.aweme。不看则已,一看把我吓一跳。抖音APP的内存使用高达28G(其中有1.1G在物理内存中)。

再看一下top上面的物理内存宏观数据,纯粹空闲的只有98MB。坦率说,使用幽兰一年多,我还是第一次看到空闲内存这么低。考虑到内存的重要性,幽兰配置了16GB物理内存。因此,在跑几乎所有传统Linux应用时,幽兰的空闲内存都还有很多个GB。

看到这么低的空闲内存,我的大脑立刻兴奋了,自动屏蔽了主播反复唠叨的“婆婆丁”话题,一道灵光闪现,我猜出了抖音卡图的原因

打开控制台窗口,sudo su切换到管理员身份,接下来发出几串命令创建内存交换文件。

mkdir /swap
dd if=/dev/zero of=/swap/swapfile bs=1M count=8192


mkswap /swap/swapfile #建立swap文件系统
chmod 600 /swap/swapfile #修改权限


    然后执行swapon启用内存交换文件。

swapon /swap/swapfile

关闭抖音,再次开启,抖音视频动起来了!

因为截图无法证明视频在动,所以我拿出手机,录了一小段录像,发到“安卓调试”群。

8dddda58bff319a486b72f8e56d44615.png

折腾一周的问题,居然在周五下班时迎刃而解,很是超出我的预料。把刚才的命令略作整理,发到了幽兰的wiki页面。

https://www.nanocode.cn/wiki/docs/youlan/swapfile

内存是软件的舞台,虽然今天的计算机系统都配置较高的物理内存,但其实还是不够用,至少对于抖音这样的APP来说,是不够用的。因为此,还有必要使用虚拟内存。Linux内核对虚拟内存有很好的支持,是从1991年就有的功能,最初版本是林纳斯在1991年的圣诞节前日夜奋战而实现的,我在《软件简史》里不惜笔墨,详细记录了林纳斯的1991,从春到夏,从夏到秋,从秋到冬。

fa4e71e1351106be3ffce769943ba7a4.jpeg

在秀峰版本前,幽兰默认建有交换分区,但是在双剑镜像中,这个好的特征丢失了,在下一个版本一定会调整回来。老朋友张佩曾说过:“Windows太吃内存了”。套用这句话:“抖音也很吃内存。”

我相信,在这样的软件大生产时代里,吃内存的应用会越来越多。为了记录美好生活么。^-^

当然,对于软件同行来说,能够合理规划架构,节约使用内存就更好了。

为了更好的交流安卓调试技术,我还牵头组织了一个兴趣小组,取名“卓研社”——安卓技术研习社。欢迎有志于深入研究安卓开发调试技术的同行加入,一起创造和记录美好生活。

1d3af90262217268383c2cd4953de7f1.png

(写文章很辛苦,恳请各位读者点击“在看”,也欢迎转发)

*************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生

扫描下方二维码或者在微信中搜索“盛格塾”小程序,可以阅读更多文章和有声读物

cef552403f58a8f11b98da53701a8bdb.png

也欢迎关注格友公众号

a55841c0c57c943c3bb68e744b06205a.jpeg

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值