Tips : 由于微信外链限制,很多文章链接都无法直接访问,推荐大家订阅 NewsLetter 来获得更好的阅读体验,或者访问网页端或者知乎专栏 (点击原文即可)

技术文章

过去一周 Android 相关的技术文章精选,以及过去一周发现的经典文章

  1. 分享不停,踏浪前行 | 开发者说·DTalk 年中鉴赏 - Android 篇 : 时光荏苒,悄然过半。在 2022 上半年,开发者与我们共同见证了 Android 13 抵达平台稳定性里程碑;Android 隐私沙盒为改善用户隐私提供了一条清晰的路径;Android Studio Chipmunk 和 Jetpack Compose 稳定版的发布;零基础入门 Jetpack Compose 中文课程的到来。还在 Google I/O 大会中一起感受了技术的更新与迭代,隐私与数据安全的不断提升。本期我们将带您回顾 2022 上半年最受欢迎的 DTalk 分享文章与视频内容

  2. 分享不同,精彩纷呈 | 开发者说·DTalk 年中鉴赏 - Flutter 篇 : 时光荏苒,悄然过半。在 2022 上半年,我们迎接了 Flutter 3,成功通往了 Dart 2.17,抵达了 Android 13 平台稳定性里程碑,同时也见证了 Chrome OS 的第 100 个稳定版本,Android 隐私沙盒为改善用户隐私提供了一条清晰的路径,Android Studio Chipmunk 和 Jetpack Compose 稳定版的到来。还在 Google I/O 大会中一起感受了技术的更新与迭代,隐私与数据安全的不断提升。本期我们将带您回顾 2022 上半年 Flutter 最受欢迎的文章与视频作品

  3. 手机平台上的用户空间锁概述 : 作为一个长期工作在内核的工程师,本无意去窥探上层锁机制的秘密。然而实际工作中你就会发现,无论是内核锁还是用户空间锁,其基本原理都是一样的。这样,所有在内核锁上的优化其实都可以平移到用户空间,实现“一鱼两吃”,也是美事一桩。不过,手机平台上,上层代码是 Java 或者 C++语言写的,作为 c 程序员,对 Java 和 C++都几乎是一无所知,在探索上层锁的过程中也是“滴滴血泪”,不足为外人道也。鉴于此,本文难免会有错误,希望读者见谅并指出,不胜感激。

  4. 如何将一个算法模型转换成端智能模型? : 在开始端智能技术工程实践的介绍前,有一个无法绕过的问题:端上的计算能力到底如何?虽然我们对神经网络运算加速有所耳闻,也知道不同的移动设备有着不同的加速方案,但没有一个定量的分析很难让我们有一个清晰客观的认识。于是,我针对机器学习的 Helloword 项目 Mnist 手写数字识别,做了一个小实验,分别在我的 MacBook Pro 和 iPhone 手机上运行了同样的算法模型,把两侧的训练样本、模型结构、模型参数、训练参数等对齐,最终得出图 1 的结果:面对 60000 个训练样本 10 个 Epoch 在 i7 CPU 的 2015 款 15 寸 MacBook Pro 上需要 128 秒,而在我的 iPhone 13 Pro Max 上只需要 86 秒,这足以证明端上计算能力能够满足我们使用模型进行预测乃至训练模型的计算能力要求。

  5. Hummer 引擎优化系列 - 内存稳定性研究与优化 : 涉猎 Flutter 引擎优化一段时间后,我们对 Flutter 引擎的内存占用有了一个粗略认识,在保持谨慎审视的基础上怀有对未来的乐观期冀。再时隔一年,Hummer 经历了一些内存治理和优化的实施,我们也得到了一些阶段性的成果,因此需要重新对之前的一些认识和实践盘点一下。

  6. Making Sense of Intent Filters in Android 13 : 在 Android 13 之前,当一个应用程序在其清单中注册了一个 export 的组件并添加了一个 intent-filter ,该组件可以被任何明确的意图启动--即使是那些不符合意图过滤器的意图。在某些情况下,这可能会允许其他应用程序触发仅有的内部功能。

    这种行为在安卓 13 中得到了更新。现在,指定行动并来自外部应用程序的意图将被传递给导出的组件,如果且仅当该意图符合其声明的 intent-filter 元素。

  7. 检测车机中 ADB 远程调试控制 Android 系统攻击 : 我们常说的 adb,也称为 Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。

  8. 货拉拉 Android 动态资源管理系统原理与实践(上) :

    1. 随着公司业务的扩展,货拉拉用户端 apk 包的体积也不断变大,过去一年,用户端 android 组进行了大量的瘦身工作,取得了较为显著的成果。再使用常规方法,已经很难优化包体积了。

    2. 我们可以把一些使用频率相对较低的资源不打包进 apk,并在需要时下载到本地(例如动画文件,字体,zip 压缩包,so 库等)

    3. 我们注意到,货拉拉用户端 apk 中,使用了 35 个以上的 so 库,并且都支持 arm64-v8a 和 armeabi-v7a 这 2 种 abi,结果就是 so 体积成倍上涨。用户端生产环境下的 apk,解压缩后,存放 so 包的 lib 目录,占据了整个应用 41%的大小。

    4. 因此动态资源管理系统是下一个优化的重点,动画,字体和 zip 包只是普通文件,完全可以支持动态下载并使用。而 so 文件本质上就是一种可动态加载并执行的文件,将 so 文件动态下发是切实可行的,但是要将它从 apk 中剔除并保证稳定性并不是一件易事。

  9. 百度 APP iOS 端内存优化实践-大块内存监控方案 : 内存不足引发的 APP 崩溃通常称为 OOM(Out Of Memory),iOS 端无法捕获 OOM 异常,也得不到任何堆栈信息,给我们排查和解决问题带来很多困扰。引起 OOM 的原因归根结底就是因为内存分配不合理引起的,尤其是内存处于危险水位时单次内存分配过大引起 Jetsam 机制开始生效而杀掉进程,通过我们线上数据监控,百度 APP 客户端单次内存分配超过 30M 的 case 很多。

    针对这种潜在的引起 OOM 的隐患,我们开发了一种大内存分配监控方案,充分利用线上监控优势(丰富真实的用户场景和用户路径)和线下流水线优势(可获取更多的堆栈信息),其中线上环境除了功能实现外,还要重点考虑稳定性,不能引入额外的性能问题,经过技术探索我们解决了此类难题,线上监控和线下流水线监控相结合实现对百度 APP 大块内存的监控。

  10. bizz84/flutter-tips-and-tricks : A collection of all the Flutter tips & tricks

  11. 万字剖析 Armv8 架构虚拟化 : 本文描述了 Armv8-A AArch64 的虚拟化支持。包括 stage 2 页表转换,虚拟异常,以及陷阱。本文介绍了一些基础的硬件辅助虚拟化理论以及一些 Hypervisor 如何利用这些虚拟化特性的例子。文本不会讲述某一具体的 Hypervisor 软件是如何工作的以及如何开发一款 Hypervisor 软件。通过阅读本文,你可以学到两种类型的 Hypervisor 以及它们是如何映射到 Arm 的异常级别。你将能解释陷阱是如何工作的以及其是如何被用来进行各种模拟操作。你将能描述 Hypervisor 可以产生什么虚拟异常以及产生这些虚拟异常的机制。理解本文内容需要一定基础,本文假定你熟悉 ARMv8 体系结构的异常模型和内存管理。

  12. 使用内存回收技术对嵌入式系统进行性能优化 : 嵌入式系统不像互联网那种大型分布式服务器系统,他们往往内存和存储容量比较充裕,因而关注点在分布式方面,对单机性能不够重视。嵌入式系统,在有限的内存和存储空间因素制约下,会更加关注单机性能优化。

    而内存回收这块是比较重要的,因为内存回收做的不好,内存压力得不到释放,最直接的是内存压力会转化为 IO 压力,对系统 io 性能造成影响。另外也会转换为 cpu 压力,影响程序的 cpu 资源使用。

    所以结合我对内存回收方面的调研,想重点写下对 Linux 内核内存回收这块代码的理解,也想分享下我在这块的调研心得。

  13. 【WWDC22 110362】快速链接:优化构建和启动耗时 : 摘要:本 session 是由苹果链接器团队的首席工程师 Nick Kledzik 带来的关于如何实现快速链接的分享。主要介绍了苹果近期在静态链接和动态链接方面的一系列优化,同时帮助大家理解链接过程中的底层细节,让大家可以提升自己 App 的静态和动态链接性能。

  14. Compose 与原生启动性能对比: 从本次测试结果来,Compose 的冷启动略逊于原生,两者相差 124ms,但在热启动与温启动状态下,Compose 性能又优于原生

  15. LWN:删除调度器中功耗差异幅度的检查! : CPU scheduler 的工作总是挺困难的;它必须找到一种方法来把 CPU 时间分配给系统中的所有任务,必须要是公平的,能允许所有的任务都有进展,并使整个系统的吞吐量(throughput)最大化。最近,它又收到了一个新要求:最大限度地减少系统的能耗。目前有一个由 Vincent Donnefort 和 Dietmar Eggemann 合作发布的 patch set 正在讨论中,它对满足这个要求的实现方式进行了更改。实际的变动并不大,但它说明了我们在撰写正确的启发式规则上是有多么困难。

  16. 一文看懂 Android 签名 v1、v2、v3、v4,竟然都 v4 了 : Android 签名 v1、v2、v3、v4 的区别

  17. 探究 ANR 原理-是谁控制了 ANR 的触发时间 : ANR(Application Not responding)是指应用程序未响应,Android 系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成 ANR。

  18. Android 重学系列 Ashmem 匿名共享内存 : 本文让我们来聊聊匿名共享内存 Ashmem。Ashmem 为什么会诞生?共享内存本质上还是为了方便跨进程通信,减少拷贝次数,提高性能。

  19. 谈谈 Android 渲染机制:如何绘制并显示一帧图像? : 本文将介绍 Android 的渲染机制。了解 Android 的渲染机制不论是对日常的开发,还是渲染问题排查都会有帮助。本文希望能带你了解 Android 是如何绘制并显示一帧图像的,同时会涉及 Perfetto UI 的使用,以及带来一些延伸的思考问题,感兴趣的可以在阅读的同时同步使用 Perfetto UI 进行尝试。

  20. 对移动端 app 容灾的思考 : 其实在笔者角度上看,技术与业务的关系其实是比较单一的,虽然不至于对立,但是一个业务人员看待技术,最关心的可能就是稳定性了,在“老板”角度上看,他其实不太关心所用的技术是什么,但是一定关心这个服务能不能保证自己的业务能不能持续,这也是笔者访谈了几位非技术人员得出的结论,同时在“降本增效”的今天,追求稳定性可能是大部分公司的选择了。还有就是站在长远立场上看,移动端的容灾也慢慢会成为各大公司角逐的一个点。一个由于 crash 导致而离开的用户,就有可能带走 10 个相关联客户,在 app 场景如此,在游戏场景也是,如果打着游戏突然闪退了,肯定是一个非常不好的体验。

  21. 为什么说获取堆栈从来就不是一件简单的事情 : 本来 Signal 出发的目的就是想建造一个类似于安全气囊的装置,保证 crash 后第一时间重启恢复,达到一个应用稳定的目的,但是慢慢写着写着,发现很多 crash 监控平台的也是用了相同的核心原理(大部分还没开源噢),只是作用的目标不同,那么为什么不把 Signal 打造成一个通用的基础件呢!无论是安全气囊还是监控,其实都是上层的应用不同罢了!嗯!有了这个想法之后,给 Signal 补充一些日志监控逻辑,就更加完善了!所以就有了本篇文章!算是一个补充文

  22. Android 项目的 Code Reviewer 清单 : 查看 Android 代码库时要记住的几点:代码审查有时是一个乏味的过程,但我相信我们需要花更多的时间在这上面。也许这是你学习或分享一些知识的机会。这里列出了一些在 Android 项目的 Code Review 过程中检查所必需的要点。

  23. Android 启动优化,方案调研 : 用户体验(User Experience,简称 UE/UX)是用户在使用产品过程中建立起来的一种纯主观感受。但是对于一个界定明确的用户群体来讲,其用户体验的共性是能够经由良好设计实验来认识到。计算机技术和互联网的发展,使技术创新形态正在发生转变,以用户为中心、以人为本越来越得到重视,用户体验也因此被称做创新 2.0 模式的精髓。在中国面向知识社会的创新 2.0——应用创新园区模式探索中,更将用户体验作为“三验”创新机制之首。ISO 9241-210 标准将用户体验定义为 “人们对于针对使用或期望使用的产品、系统或者服务的认知印象和回应”。通俗来讲就是“这个东西好不好用,用起来方不方便”。因此,用户体验是主观的,且其注重实际应用时的产生的效果。ISO 定义的补充说明有着如下解释:用户体验,即用户在使用一个产品或系统之前、使用期间和使用之后的全部感受,包括情感、信仰、喜好、认知印象、生理和心理反应、行为和成就等各个方面。该说明还列出三个影响用户体验的因素:系统,用户和使用环境。

  24. Android 强推的 Baseline Profiles 国内能用吗?我找 Google 工程师求证了! : 今年 Google I/O 大会上,Android 官方强推了一把 Baseline Profile,不仅在 Android、Jetpack 的主题演讲里有提到了它,就连 Jetpack Compose、Android Studio 相关的主题里也有它的身影。

  25. 2 小时入门 Jetpack Compose(上) : 最近工作有点忙的,趁着端午节 3 天小长假,我来写个 Compose 快速入门的教程吧!我们的目标是:「2 小时入门 Compose」!

  26. 2 小时入门 Jetpack Compose(下) : 最近工作有点忙的,趁着端午节 3 天小长假,我来写个 Compose 快速入门的教程吧!我们的目标是:「2 小时入门 Compose」!

  27. Bitmap 解码优化 : 一般情况下,开发时直接选择 Google 提供的解码 API,但是 API 的使用不当会导致 I/O 型的性能问题,今天就探索一下怎样做才能做到最优的 Bitmap 解码,这可是现代化项目的重要组成部分。


经验分享 && 推荐阅读

过去一周个人阅读和收藏的非技术文章精选,扩展 Android 之外的知识和视野,不要给自己设限

  1. How I became a Google Developer Expert (GDE) for Android with the help of the #RoadToGDE program : 上周我成为了安卓的谷歌开发者专家(GDE)。这是我第二次尝试申请,其中包括我成为 Google 的 Road to GDE 项目的一部分。这篇文章强调了我在指导计划中的经验,以及它是如何帮助我成为 GDE 的,以及你如何也能成为 GDE 的。

  2. 使用二八法则省力地学习 awk : 在本文中,我们将学习到如何使用二八法则来省力轻松学习 linux 文本处理命令 awk。读完本文你就会学习到一种快速学习的方法, 以及使用 awk 来处理文本和 stdout。

  3. 如何阅读一份源代码?(2020 年版) : 读代码与写代码是两个不太一样的技能,原因在于“写代码是在表达自己,读代码是在理解别人”。因为面对的项目多,项目的作者有各自的风格,理解起来需要花费不少的精力。我从业这些年泛读、精读过的项目源码不算少了,陆陆续续的也写了一些代码分析的文章,本文中就简单总结一下我的方法。

  4. 我怎样发布 Telegram 频道信息? : 赏心悦目的排版会令人舒适,但是小小的文本框需要的注意的地方还挺多的。运营 APPDO 数字生活指南一年之久,对频道的文本有了一套自己的处理模式,想借此机会分享出来,希望本文能对大家 Telegram 频道的文本编辑工作和提高字体与排版审美有所帮助。

  5. 当众学习 - 最快的学习方式

    1. 英文原文

    2. 中文译文

  6. 2022-28: 热乎的暗黑 3 PTR : 这里又是一份周报, 时间范围是 2022-07-04 到 2022-07-11, 会记录一些工作及生活上有意思和没那么有意思的事情.

  7. “这不是一篇阅读理解”,这是《最伟大的作品》(上) : 周杰伦 最伟大的作品 MV 解析

  8. “这不是一篇阅读理解”,这是《最伟大的艺术》(下) : 周杰伦 最伟大的作品 MV 解析


有趣的 Weekly

  1. Android Weekly-527

  2. Kotlin Weekly #311

  3. onCreate Digest - Issue #116

  4. Android NewLetter #113

  5. Android NewLetter #114

  6. Graphics Programming weekly - Issue 243

  7. 软件测试周刊(第 80 期):当你想倾诉的话语已经涌到了舌尖,但是把那些话憋回去的瞬间,从那个瞬间起,你就成为了大人

  8. 科技爱好者周刊(第 214 期):你的地图是错的

  9. 前端技术栈周刊 #33

  10. Now in Android #64

  11. Issue #05: 一周信息食谱 0716


书籍推荐

最近读的比较多的非技术书是 :「置身事内:中国政府与经济发展」

了解了政府的运行逻辑,或许就可以对目前发生的许多乱象有一个更深入的理解和认识了。一个成熟的韭菜,就是明知道要被割,还义无反顾

豆瓣链接 : https://book.douban.com/subject/35546622/

京东链接 : https://item.jd.com/13353378.html


工具推荐

如果你在 Win 和 Mac 下没有趁手的截图工具,那么可以试试 snipaste ,最基本功能都有,很适合工程师们在 Teams 或者 TT 或者飞书上扯皮的时候贴代码用

官网 https://www.snipaste.com/


定时打鸡血


NewsLetter

由于微信外链限制,很多文章链接都无法直接访问,推荐大家订阅 NewsLetter 来获得更好的阅读体验,或者访问网页端或者知乎专栏

  1. 订阅地址:https://androidweekly.zhubai.love/

  2. 本文 NewsLetter 地址:https://androidweekly.zhubai.love/posts/2160489310682906624

  3. 本文知乎地址:https://zhuanlan.zhihu.com/p/542795375

Android Weekly #37 :寻找知识的能力是一个非常重要的能力,如果找不到,你就只能等着别人来投喂...相关推荐

  1. Android Weekly #30

    技术文章 过去一周 Android 相关的技术文章精选,以及过去一周发现的经典文章 深入探索 Flutter 性能优化 Flutter 作为目前最火爆的移动端跨平台框架,能够帮助开发者通过一套代码库高 ...

  2. Android Weekly #32 - 面对畏惧之人,便说笨方法是行动的勇敢

    Part1技术文章 过去一周 Android 相关的技术文章精选,以及过去一周发现的经典文章 ASM 字节码插桩:进行线程整治[1]:京东零售技术 发表的一篇文章:AOP 技术在 APP 开发中的多场 ...

  3. 你的知识死角不能否定你的技术能力

    有些事情你不知道,但你一定能解决. 有些人通过我账号资料里的微信加我,然后问我一些所谓"怎么办"的问题,不是我不告诉你,而是我确实不知道.我确实有很高的title,也确实有很多的技 ...

  4. 视频教程-Android之ViewPager,Fragment知识全讲-Android

    Android之ViewPager,Fragment知识全讲 刘志远,北京邮电大学硕士研究生, 北京育华志远科技有限公司创始人, 育华志远教育品牌负责人,育华志远课程体系打造者. 率领团队为互联网行业 ...

  5. Android Weekly Notes Issue #226

    Android Weekly Issue #226 October 9th, 2016 Android Weekly Issue #226 本期内容包括: 用Firebase做A/B Test; 用R ...

  6. Android开发必看知识,不看后悔

    Android开发必看知识,不看后悔 打包为大家奉上最实用最给力的资源,不看你绝对后悔. 最强大的UI特效 奇艺高清UI界面源代码 http://www.eoeandroid.com/thread-1 ...

  7. Android技能树 — 树基础知识小结(一)

    前言: 现在安卓面试,对于数据结构的问题也越来越多了,也经常看到别人发的面试题都是问什么红黑树,二叉树查找等,所以我们虽然不会马上就会各种难的面试题,但起码树的基础知识还是要会的,这样才能去进一步学. ...

  8. Android Weekly Notes Issue #220

    Android Weekly Issue #220 August 28th, 2016 Android Weekly Issue #220 ARTICLES & TUTORIALS Manag ...

  9. Android Weekly Notes Issue #225

    Android Weekly Issue #225 October 2nd, 2016 Android Weekly Issue #225 本期内容包括: Android 7.0的Quick Sett ...

最新文章

  1. 8月精选Python开源项目Top10
  2. 美国互联网广告07年总开支255亿美元, 增长27%
  3. JZOJ 5452. 【NOIP2017提高A组冲刺11.5】轰炸
  4. 全面剖析支付宝服务窗功能二次开发
  5. Dreamweaver使用详解
  6. 【汇编语言】8086汇编的loop循环与[bx]寻址(王爽第五章5.5节学习笔记)
  7. mysql text保存图片_用mysql 如果包含有文字和图片,那么我要用哪种数据类型存储呢?还是分开,用TEXT和BLOB吗?...
  8. 如何用python做界面_Python+AutoIt实现界面工具开发
  9. java 多项式拟合最多的项数_python实现2019nCoV确诊数据拟合与预测
  10. Python中用户管理(用户的登陆、用户的增删改查)
  11. Excel 已经检测到XXX.xsl是SYLK文件,但是不能将其加载的问题
  12. WORD必学技巧:使用项目编号
  13. ReferenceError: server is not defined
  14. PageOffice 5.2 试用版注册使用
  15. FPGA开发板学习(1)
  16. 基于 CPG 神经网络的下肢康复外骨骼机器人
  17. Excel常用技巧(一)——快捷键
  18. MacBook Pro 触控栏不能正常使用怎么解决
  19. 过度商业化的小丑——刘跑跑
  20. linux之文件搜索和文件内容搜索

热门文章

  1. SAP-MM知识精解-批次管理(06-01)-批次确定的概览及主要逻辑
  2. 把款软件可以测试双显卡,大胜对手!A6双显卡性能评测
  3. led灯串怎么摆造型_彩灯羊造型
  4. 计算机毕业设计(附源码)python医院预约挂号系统
  5. 特斯拉FSD技术解析
  6. 现代化小区建筑规划设计的问题
  7. android 应用未验证,解决微信分享显示“未验证应用”问题。
  8. 记一次 .NET 某智慧物流WCS系统CPU爆高分析
  9. wait释放锁的说明
  10. 2021年中式烹调师(初级)最新解析及中式烹调师(初级)免费试题