Android Tech Weekly – 45 :再不好好学习,Copilot 就取代你了

技术文章

  1. 写给 Android 开发者的芯片知识 https://juejin.cn/post/7025066082448703525

    本文主要讲清了下面几个问题:Android 动态库适配到底在适配什么?CPU、架构、指令集、芯片之间的关系和联系;armv7a 中的 a 指什么?芯片的核心技术和门槛是什么?

  2. 手把手带你搭建一个优秀的 Android 项目架构 https://juejin.cn/post/7023377961503948808

    文章内容包括:Kotlin 各种语法、Jetpack:主要是 ViewModel、LifeCycle、LiveData、Room、ViewBinding、Kotlin 协程、思考哪些地方可能会存在多线程带来的线程同步问题以及处理方案、Retrofit+OkHttp、MultiType、MMKV 等

  3. MVVM 进阶版:MVI 架构 https://juejin.cn/post/7022624191723601928

    MVI 主要有以下优势:

    1. 强调数据单向流动,很容易对状态变化进行跟踪和回溯

    2. 使用 ViewState 对 State 集中管理,只需要订阅一个 ViewState 便可获取页面的所有状态,相对 MVVM 减少了不少模板代码

    3. ViewModel 通过 ViewState 与 Action 通信,通过浏览 ViewState 和 Aciton 定义就可以理清 ViewModel 的职责,可以直接拿来作为接口文档使用。

  4. 来讨论下 Android 面试该问什么类型的题目? https://juejin.cn/post/7023508547832905758

    非常不错的讨论 Android 面试题的文章,上次群里也讨论了一下面试相关的问题,:"面试的目的就是发现闪光点,提问只是手段。闪光点包括业务知识,沟通技巧等,最关键的是思路和表达,不会就是不会,千万不要支支吾吾 – by 罗翔"

    看来后续应该多讨论讨论类似的问题,形成一个系列沉淀下来

  5. Android 调用链——自动化精准测试 https://juejin.cn/post/7022848499897073694

    自动化精准测试是指对每次 MR 中改动部分的代码,能够进行自动的、准确的测试,从而提高代码的质量保障以及减少测试的人耗

    本文首先介绍了自动化精准测试的演变过程,以及我们在实现自动化精准测试过程中遇到了哪些问题,及其解决的方案;其次,本文着重介绍了自动化精准测试流程中,Android 调用链作用、性质以及它的构建方式,并介绍了 Android 调用链的优化项,即基于 Android 特性定制化关联 Activity,使得 mr 变更方法关联 Activity 的准确度提升,从而提高测试用例的推荐准确率,减少不必要的测试,提高测试人效。

  6. 获取数据并绑定到 UI | MAD Skills https://mp.weixin.qq.com/s/W0T3BkMv5gMAf8xoZ3Zd_g

    上一篇 Paging 3.0 简介的文章中,我们讨论了 Paging 库,了解了如何将它融入到应用架构中,并将其整合进了应用的数据层。我们使用了 PagingSource 来为我们的应用获取并使用数据,以及用 PagingConfig 来创建能够提供 Flow给 UI 消费的 Pager 对象。在本文中我将介绍如何在您的 UI 中实际使用 Flow

  7. 动态追踪技术:Linux 喜迎 DTrace :https://zhuanlan.zhihu.com/p/24124082

    鉴于这套兵器过于复杂(牛逼),属于专家级技能, advanced performance analysis and troubleshooting tool。据称掌握该技能需要耗费大约 100 小时以上,所以如果不是对于系统性能问题有极致追求,以及变态般地技术狂热,建议绕过本文。

  8. 深入理解 Flutter 的图形图像绘制原理——图形库 skia 剖析 https://segmentfault.com/a/1190000038827450

    Flutter 是目前流行的高性能跨平台 UI 框架,图形库 skia 是其跨平台的基石。本文将深入分析 skia 的图形、字体、图片的渲染原理,如何挖掘硬件特性,为 UI 性能优化提供思路

  9. 10 分钟掌握 Java 性能分析诀窍 :https://segmentfault.com/a/1190000040332531

    Java 性能分析是一门艺术和科学。科学指的是性能分析一般都包括大量的数字、测量和分析;艺术指的是知识、经验和直觉的使用。性能分析的工具或者手段各有千秋,但性能的分析的过程却都大相径庭。本文就已知适用的 Java 性能分析窍门进行一些分享,帮助用户更好的理解和运用。

  10. How Trello Android converted from Gson to Moshi https://blog.danlew.net/2021/11/01/how-trello-android-converted-from-gson-to-moshi/

    本文主要是讲了将 JSON 解析库从 Gson 切换到 Moshi 的一个过程,作者解释为什么要切换:safety, speed, and bad life choices.

  11. 响应速度相关的三篇 Systrace 系列文章都上传到了微信公众号

    1. Systrace 响应速度实战 1 :了解响应速度原理 https://mp.weixin.qq.com/s/DpeBc1fGodP0yau6V-xkAw

    2. Systrace 响应速度实战 2 :响应速度实战分析 – 以启动速度为例 https://mp.weixin.qq.com/s/duLdkADjVJDmC_urxEb_Mw

    3. Systrace 响应速度实战 3 :响应速度延伸知识 https://mp.weixin.qq.com/s/sFaiQnijejZigy4-nsXBUw

  12. 快手 Android 内存分配器优化探索 (二) https://mp.weixin.qq.com/s/fB0IILuBBuk_YrKNjW_3Ag

    本篇将深度剖析 jemalloc 的原理,并介绍 Google 在 Android 平台的定制优化,挖掘更多内存极限优化空间

  13. 大力学习灯 APP 编译内存治理 https://mp.weixin.qq.com/s/sKMxPxD5LekTl1fBFjRkRA

    随着大力学习灯业务的蓬勃发展,大力客户端的编译情况劣化越来越严重。sync 一次项目需要长达五分钟,本地编译耗时也极长,还会经常出现 GC over limit 错误,严重影响开发效率。CI 编译时长经常超过 20 分钟,严重影响合码效率。本文介绍了团队治理了编译时候的内存问题,效果十分显著,既解决了本地编译的难题,也提升了 CI 编译速度。

  14. Room & Kotlin 符号的处理 https://mp.weixin.qq.com/s/DAroTRQwTV2DA74ncs–ng

    本文内容重点不在注解的处理、Room 或者 KSP。而在于重点介绍我们在为 Room 添加 KSP 支持时所面临的挑战和所做的权衡。为了理解本文您并不需要了解 Room 或者 KSP,但必须熟悉注解处理

  15. Linux 内存占用分析的几个方法 https://mp.weixin.qq.com/s/d1RC3I_MvzWcCd2TZMe_6A

    命令包括

    1. free 命令

    2. vmstat 命令

    3. proc/meminfo 命令

    4. top 命令

    5. htop 命令

    6. 看进程内存信息

  16. 使用 Jetpack Macrobenchmark 对用例进行基准测试 https://developer.android.google.cn/studio/profile/macrobenchmark

    借助 Macrobenchmark,您可以直接针对在搭载 Android 10 (API 29) 或更高版本系统的设备上运行的应用编写启动和运行时性能测试。

    建议您将 Macrobenchmark 与最新版本的 Android Studio(2020.3.1 Beta 4 或更高版本)搭配使用,因为该版本的 IDE 中提供了可与 Macrobenchmark 集成的新功能。使用早期版本 Android Studio 的用户可以根据本主题后面部分的额外说明来处理跟踪文件。

  17. Load_balance 函数情景分析 https://mp.weixin.qq.com/s/CjxUsg-4ARqLmDObUSdtYQ

    本文主要分成三个部分,第一个部分就是本章,简单的描述了本文的结构和阅读前提条件。第二章是对 load_balance 函数设计的数据结构进行描述。这一章不需要阅读,只是在有需要的时候可以查阅几个主要数据结构的各个成员的具体功能。随后的若干个章节是以 load_balance 函数为主线,对各个逻辑过程进行逐行分析。

    需要强调的是本文不是独立成文的,很多负载均衡的基础知识(例如 sched domain、sched group,什么是负载、运行负载、利用率 utility,什么是均衡……)在 CFS 任务负载均衡系列文章的第一篇已经描述,如果没有阅读过,强烈建议提前阅读。如果已经具体负载均衡的基础概念,那么希望本文能够给你带来研读代码的快乐。

  18. Android 12 启动画面 – SplashScreen https://juejin.cn/post/7026188311198695432

    应用启动画面 – Android 12 还为所有的应用带来了新的启动画面。应用也可以通过多种方式来定制启动画面,以彰显其独有的品牌个性。

非技术文章

  1. 一个 NFT 像素头像卖一千万美元?猴子都能看懂的 NFT 指南 https://mp.weixin.qq.com/s/Ey7sDPpCXPI4SrJncP8R7A

    是时候入手一个 NFT 了

  2. The M1 Pro for Android Engineers https://gpeal.medium.com/the-m1-pro-for-android-engineers-a144093aa1ec

    总的来说,使用 M1 、M1 Pro、M1 Max 开发 Android 完全没有问题(Android 系统开发除外),又多了一个买 M1 Max 的理由,坐等 @Flywith24 的顶配 M1 Max 到手后的测评和虚拟机编译 Android 源码的结果

  3. 【扔物线直播】用 Jetpack Compose 一小时写一个 App https://mp.weixin.qq.com/s/dpsOn1CrtpHy6jiOMImAEA

    Android 的最新官方 UI 框架 Jetpack Compose 的正式版本已经发布,现在正越来越火热,想必大家也都知道了。现在通知大家,11 月 8 日,Google 官方认证的 Android & Kotlin 开发专家朱凯(扔物线)将在线直播讲授 Compose 的知识,大家一定不要错过!

  4. 2021 Kotlin 中文开发者大会,11月6日线上见! https://mp.weixin.qq.com/s/RkDxMH4tIt359gBHktWBIw

开发 Weekly

  1. Android Weekly – 490 https://androidweekly.net/issues/issue-490

  2. Kotlin Weekly – 274 https://mailchi.mp/kotlinweekly/kotlin-weekly-274

  3. 软件测试周刊(第 44 期):"去那么远没问题么?" “没问题。道路笔直畅通无阻,太阳又没下山,油箱满满的 https://mp.weixin.qq.com/s/hdpTusm_G4bpJ1T0l1f5Mg

  4. Now in Android #50 — ADS Recap Part 1 https://medium.com/androiddevelopers/now-in-android-50-ads-special-9934422f8dd1

  5. Graphics Programming weekly – Issue 207 – October 31, 2021 https://www.jendrikillner.com/post/graphics-programming-weekly-issue-207/

Podcast

  1. Now in Android https://www.youtube.com/watch?v=0puqoQ-9kB4

  2. ByteTalk

    1. 与飞书的几位小伙伴聊聊程序员的那些事 https://www.xiaoyuzhoufm.com/episode/6177bab6b69226ed16a3ed42

    2. 从程序员到潜水员,与赵青聊聊他的心路历程 https://www.xiaoyuzhoufm.com/episode/618208328a9c9c36e9977e44

  3. AAA 549: Thumb Yoga – Android 12L, Pixel 6 review, Magic Eraser for all, Tasker saves the day, the next Tensor https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy50d2l0LnR2L2FhYS54bWw=/episode/aHR0cHM6Ly9wZHN0LmZtL2UvY2h0YmwuY29tL3RyYWNrL0U5MTgzMy9jZG4udHdpdC50di9tZWdhcGhvbmUvYWFhXzU0OS9UV0kyOTY5NjAzMzIyLm1wMw==

书籍推荐

  1. 对实现编程语言感兴趣的,推荐最近才正式出版的一本书 Crafting Interpreters craftinginterpreters.com 写得非常好。这本书以 Lox 语言为例,讲了两个解释器的实现,第一次用 Java 沿着 AST 走一遍,让人对解释器干了啥有个基本概念,第二次用 C 语言写了虚拟机去执行编译后的字节码,注重效率。这书中实现的解释器只用到了 Java 和 C 语言的标准库。词法分析、语法分析、垃圾收集程序乃至哈希表都一步步从理论到实践教你怎么写一个出来。

  2. 为什么这么设计系列文章 https://draveness.me/whys-the-design/

    为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响

工具推荐

  1. IconKitchen

    e2804a081219a012ab17d3428493c8b0.png

    1. 主页:https://icon.kitchen/

    2. 为 Android 、iOS、Web 开发人员制作图标的在线工具,简单易用,写 Demo 再也不用一直用默认的那个图标了

  2. Github Copilot :你的 AI 编程伴侣

    0322226b1c5b606c49efc5e584fbbc8d.png

    1. 目前的 AS 的稳定版本没法安装,得需要 Canary 版本才可以

    2. AS 的插件商店目前还没有 Github Copilot ,需要从 jetbrains 那边下载插件,然后本地安装(https://plugins.jetbrains.com/plugin/17718-github-copilot/versions),安装好之后在 AS 的 tools 里面有,需要登录 Github(需要授权,你得有 Github Copilot 试用邀请,可以去他的官网申请 https://copilot.github.com/)

    3. 安装和使用过程,需要网络比较“通顺”,dddd

    4. 从官网描述来看,注释(包括类注释和函数注释)和函数名还是蛮重要的,他根据你这个来提建议,论学习英语的重要性

    5. 官网:https://copilot.github.com/

定时打鸡血

人是怎么废掉的?02c598286b0ceefeb862c57779435ccc.png

新的技术交流群

之前的微信群满了,大家可以扫码加入新的这个

本群旨在讨论 Android 及其相关的技术话题,包括但不限于 Android 性能优化课题(响应速度、流畅度、ANR、Crash、内存、耗电、性能监控等)Android App 开发、Framework 开发、Linux、大前端、面试分享、技术招聘等话题

鉴于群里的各位大佬们时间都很宝贵,大家聊天的内容尽量与上面的主题相关,禁止吹水、装机、购机、手机厂商优劣讨论……否则群会被贴上水群的标签,希望大家共同维护群氛围

另外还有闲聊吹水群、跑步群、读书群,里面大家就随意发挥了,可以私我拉进去

其他信息

  1. 博客地址:https://www.androidperformance.com/

  2. 免费知识星球:https://t.zsxq.com/ZZ337Am

  3. 知乎地址:https://www.zhihu.com/people/gracker (欢迎互相关注点赞呀)

69b803c4074e37e6f042234b25936b39.png

关于投稿

  1. 我只是大自然知识的搬运工,欢迎大家自荐或者推荐,每周都会收集

  2. 欢迎大家向本公众号投稿,会注明作者和来源,可以夹带私活,比如招聘信息

  3. 由于微信没有开放外链,所以部分链接没法直接点击访问,可以查看知乎专栏的这篇文章:https://zhuanlan.zhihu.com/p/429915217,所有链接都是可以直接访问的 (查看原文也可以到达)

  4. 欢迎大家收藏、点赞、在看、分享转发到朋友圈,如果能打赏一下无业游民,会触发快速更新任务哦

Published by

风君子

独自遨游何稽首 揭天掀地慰生平