← 返回最新期
Android Weekly #29 · · 更新于 2022年3月29日

Android Weekly #29

技术文章

  1. Improving App Performance with Baseline Profiles
    1. Google 发布的一个新的库,帮助 App 开发者主动生成 Baseline Profile ,以优化 App 的启动速度。之前这个文件是 Google 在 Play Cloud 生成,然后下发给用户的,所以存在不准确的现象。现在利用这个工具,开发者本地就可以生成和调试。简单来说就是尽量减少启动阶段的 jit,对应的代码逻辑可以看这篇文章:https://source.android.google.cn/devices/tech/dalvik/jit-compiler?hl=zh-cn
  2. Android Architecture Pattern
    1. 介绍了目前 Android App 架构,包括 Single Activity Architecture、View State Architecture、Clean Architecture in Android、Flow of data、Modularisation In Android 等
  3. 【线上故障】通过系统日志分析和定位
    1. 本文分享另外一种更为棘手的线上问题解决方案-如何在没有 coredump 文件的情况下,定位程序崩溃原因
  4. 向工程腐化开炮 | proguard治理
    1. 工程腐化是app迭代过程中,一个非常棘手的问题,涉及到广泛而细碎的具体细节,对研发效能&体验、工程&产物质量、稳定性、包大小、性能,都有相对“隐蔽”而间接的影响。一般不会造成不可承受的障碍,却时常蹦出来导致“阵痛”,有点像蛀牙或智齿,到了一定程度不拔不行,但不同的是,工程的腐化很难通过一次性“拔除”来根治,任何一次“拔除”之后,需要有效的可持续治理方案,形成常态化的防腐体系。
    2. 工程腐化拆解来看,是组成app的代码工程中,工程结构本身,以及各类“元素”(manifest、代码、资源、so、配置)的腐化。优酷架构团队近年来,持续在进行思考、实践与治理,并沉淀了一些技术、工具、方案。现逐一分类汇总,辅以相关领域知识讲解,整理成为《向工程腐化开炮》系列技术文章,分享给大家。希望更多同学,一起加入到与工程腐化的这场持久战中。
    3. 本文为系列文章首篇,将聚焦于java代码proguard,这一细分领域。对工程腐化,直接开炮!
  5. Jetpack DragAndDrop 库——拖放操作如此轻松!
    1. 我们将为您介绍目前处于 Alpha 阶段的 Jetpack DragAndDrop 库,帮助您更轻松地在应用中处理拖放数据。拖放是最基本的手势操作,用户可以点击并按住图片、文本或其他数据元素,然后将其拖动至另一个应用 (或者同一个应用的其他位置) 并松手,即可将数据放置到新的位置上。手势通常在触摸屏上表现为长按,在使用鼠标时则为点击并拖动。
  6. High performance with idiomatic Kotlin
    1. 本文包括以下细节:(I)为什么高性能在我们构建软件产品时是必不可少的,(II)性能问题最常见的原因概述,(III)如何衡量性能,以及(IV)Kotlin如何帮助我们通过以习惯的方式编写可维护的、安全的、有表现力的Kotlin代码来构建优质产品。
  7. What’s new in Android 12
    1. Android 12 的新内容,不过话说 Android 13 都出来了…….
  8. 抖音 Android 性能优化系列:启动优化之理论和工具篇
    1. 启动性能是 APP 使用体验的门面,启动过程耗时较长很可能导致用户使用 APP 的兴趣骤减,抖音通过对启动性能做劣化的 AB 实验也验证了其对于业务指标有影响显著。抖音拥有数亿的用户,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向上的重中之重。
    2. 本文基于过往对抖音 Android 客户端做启动性能优化的实战经验总结提炼出普适性的方法论,并将该过程中沉淀的工具加以分享,希望能给大家带来一些新的思考。
  9. eBPF是什么?为什么对可观测性很重要
    1. Extended Berkeley Packet Filter(eBPF)是一种内核技术(从 Linux 4.x 开始),它允许程序在无需更改内核源代码,或添加额外模块的情况下运行。你可以将其视为 Linux 内核中的轻量级沙箱虚拟机(VM),程序员可以在其中运行 BPF 字节码,从而利用特定的内核资源。
    2. 使用 eBPF 消除了更改内核源代码的需要,并简化了软件利用现有层的能力。因此,它是一项强大的技术,有可能从根本上改变网络、可观察性和安全性等服务的交付方式。
    3. 下面详细介绍一下它是什么,它是如何工作的,以及何时考虑实施它。
  10. android-inline-hook
    1. shadowhook 字节跳动新开源的一个 hook 库,是一个针对 Android app 的 inline hook 库。其特性如下
    1. 支持 Android 4.1 - 12 (API level 16 - 31)。
    2. 支持 armeabi-v7a 和 arm64-v8a。
    3. 支持针对函数整体的 hook,不支持对函数中间位置的 hook。
    4. 支持通过“函数地址”或“库名 + 函数名”的方式指定 hook 位置。
    5. 自动完成“新加载动态库”的 hook(仅限“库名 + 函数名”方式),hook 完成后调用可选的回调函数。
    6. 可对同一个 hook 点并发执行多个 hook 和 unhook,彼此互不干扰(仅限 shared 模式)。
    7. 自动避免代理函数之间可能形成的递归调用和环形调用(仅限 shared 模式)。
    8. 代理函数中支持以正常的方式回溯调用栈。
    9. 集成符号地址查找功能。
    10. 使用 MIT 许可证授权。
  11. 【解惑】App处于前台,Activity就不会被回收了?
    1. 现象:App 打开多个 Activity,然后手机晾一边,过一段时间后(屏幕常亮),点击回退,之前的 Activity 空白,然后重新加载了。App 在前台,不在栈顶的 Activity 却被干掉,但进程还健在
    2. 结论
    1. 系统内存不足时,直接在内核层查杀(回收)进程,并不会考虑回收哪个Activity;
    2. 进程内存不足时,如果此进程 Activity Task数 >= 3 且 使用内存超过3/4,会对 不可见 Task进行回收,每次回收 1个 Task,回收时机为每次gc
  12. JankStats Goes Alpha
    1. 恋猫de小郭翻译版本:https://mp.weixin.qq.com/s/w8a1zWYgmmwrajLhEdGqhA
    2. JankStats:「第一个专门用于检测和报告应用在用户设备上的性能问题而构建的 AndroidX 库。」,JankStats 是一个相对较轻的库,主要有三个目标:
    1. 捕获每帧性能信息
    2. 可以运行在用户设备上
    3. 在应用程序出现性能问题时启用检测和报告发生的情况
  13. Jetpack Compose 1.1 is now stable!
    1. 都 1.1 版本了……

经验分享 && 推荐阅读

  1. 2022 年计划
  2. 拆掉知识的墙
  3. 5000字详解性能需求
  4. 如何更好地工作 -#6
  5. 如何在某一领域成为世界顶尖 -#5
  6. Android 手机的自适应高刷,为什么没能讨好用户?
  7. flomo 的 2021 和 2022
  8. 产品沉思录精选:如何管理需求优先级 | RICE方法
  9. 反向面试:你有什么问题要问面试官的?

开发 Weekly

  1. Android Weekly-504
  2. Kotlin Weekly #289

Podcast

  1. Episode 182: Large screens are a big deal

书籍推荐

  1. 软技能 2 : 软件开发者职业生涯指南

工具推荐

  1. Dev on Windows with WSL : 在 Windows 上用 WSL 优雅开发

视频推荐

【李自然说】人生如逆旅,我亦是行人 https://www.youtube.com/watch?v=JGHTcNmCcLU

里面提到的几个李自然自己身体力行的做事方法,确实很厉害的一个人:

  1. 不给自己设限,能快速融入到更有潜力的行业
  2. 向顶级的人 拼命地学习
  3. 拼命地打开自己的视野和格局
  4. 拥抱变化,甚至主动去求变
  5. 一直坚持做,就会有一个长期的口碑
  6. 提高容错率

定时打鸡血

image

投稿指南

欢迎投稿分享您的:

  • 技术博客
  • 实践经验
  • 工具推荐

投稿方式:

  • 公众号后台回复”投稿”
  • 本周刊下面留言
  • 发邮件:dreamtale.jg@gmail.com
  • 微信联系:Gracker_Gao

关于作者

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

版权声明

  • 本周刊遵循 CC BY-NC-SA 4.0 协议
  • 转载请注明出处:Android Weekly
  • 欢迎订阅、分享,让更多开发者受益