Android Weekly #28

技术文章

  1. Improving App Performance with Baseline Profiles:https://android-developers.googleblog.com/2022/01/improving-app-performance-with-baseline.html

  • Google 发布的一个新的库,帮助 App 开发者主动生成 Baseline Profile ,以优化 App 的启动速度。之前这个文件是 Google 在 Play Cloud 生成,然后下发给用户的,所以存在不准确的现象。现在利用这个工具,开发者本地就可以生成和调试。简单来说就是尽量减少启动阶段的 jit,对应的代码逻辑可以看这篇文章:https://source.android.google.cn/devices/tech/dalvik/jit-compiler?hl=zh-cn

Android Architecture Pattern : https://medium.com/team-pratilipi/android-architecture-pattern-82aa0cf7e236

  • 介绍了目前 Android App 架构,包括 Single Activity Architecture、View State Architecture、Clean Architecture in Android、Flow of data、Modularisation In Android 等

【线上故障】通过系统日志分析和定位 : https://mp.weixin.qq.com/s?__biz=Mzk0MzI4OTI1Ng==&mid=2247487678&idx=1&sn=2d8017af87b906ab9fa8f6387ded0a45

  • 本文分享另外一种更为棘手的线上问题解决方案-如何在没有 coredump 文件的情况下,定位程序崩溃原因

向工程腐化开炮 | proguard治理 : https://xie.infoq.cn/article/8f418027b1033043b7a7d5e91

  • 工程腐化是app迭代过程中,一个非常棘手的问题,涉及到广泛而细碎的具体细节,对研发效能&体验、工程&产物质量、稳定性、包大小、性能,都有相对“隐蔽”而间接的影响。一般不会造成不可承受的障碍,却时常蹦出来导致“阵痛”,有点像蛀牙或智齿,到了一定程度不拔不行,但不同的是,工程的腐化很难通过一次性“拔除”来根治,任何一次“拔除”之后,需要有效的可持续治理方案,形成常态化的防腐体系。

  • 工程腐化拆解来看,是组成app的代码工程中,工程结构本身,以及各类“元素”(manifest、代码、资源、so、配置)的腐化。优酷架构团队近年来,持续在进行思考、实践与治理,并沉淀了一些技术、工具、方案。现逐一分类汇总,辅以相关领域知识讲解,整理成为《向工程腐化开炮》系列技术文章,分享给大家。希望更多同学,一起加入到与工程腐化的这场持久战中。

  • 本文为系列文章首篇,将聚焦于java代码proguard,这一细分领域。对工程腐化,直接开炮!

Jetpack DragAndDrop 库——拖放操作如此轻松! : https://mp.weixin.qq.com/s?__biz=Mzk0NDIwMTExNw==&mid=2247508535&idx=1&sn=62e83062e97649a85c52a59620a22af9

  • 我们将为您介绍目前处于 Alpha 阶段的 Jetpack DragAndDrop 库,帮助您更轻松地在应用中处理拖放数据。拖放是最基本的手势操作,用户可以点击并按住图片、文本或其他数据元素,然后将其拖动至另一个应用 (或者同一个应用的其他位置) 并松手,即可将数据放置到新的位置上。手势通常在触摸屏上表现为长按,在使用鼠标时则为点击并拖动。

High performance with idiomatic Kotlin

  • 本文包括以下细节:(I)为什么高性能在我们构建软件产品时是必不可少的,(II)性能问题最常见的原因概述,(III)如何衡量性能,以及(IV)Kotlin如何帮助我们通过以习惯的方式编写可维护的、安全的、有表现力的Kotlin代码来构建优质产品。

What’s new in Android 12

  • Android 12 的新内容,不过话说 Android 13 都出来了.......

抖音 Android 性能优化系列:启动优化之理论和工具篇 : http://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247491335&idx=1&sn=e3eabd9253ab2f83925af974db3f3072

  • 启动性能是 APP 使用体验的门面,启动过程耗时较长很可能导致用户使用 APP 的兴趣骤减,抖音通过对启动性能做劣化的 AB 实验也验证了其对于业务指标有影响显著。抖音拥有数亿的用户,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向上的重中之重。

  • 本文基于过往对抖音 Android 客户端做启动性能优化的实战经验总结提炼出普适性的方法论,并将该过程中沉淀的工具加以分享,希望能给大家带来一些新的思考。

eBPF是什么?为什么对可观测性很重要 : http://mp.weixin.qq.com/s?__biz=MzAwMDUwNDgxOA==&mid=2652681492&idx=1&sn=008c3ed95cf1c5985700d52c47f68c42

  • Extended Berkeley Packet Filter(eBPF)是一种内核技术(从 Linux 4.x 开始),它允许程序在无需更改内核源代码,或添加额外模块的情况下运行。你可以将其视为 Linux 内核中的轻量级沙箱虚拟机(VM),程序员可以在其中运行 BPF 字节码,从而利用特定的内核资源。

  • 使用 eBPF 消除了更改内核源代码的需要,并简化了软件利用现有层的能力。因此,它是一项强大的技术,有可能从根本上改变网络、可观察性和安全性等服务的交付方式。

  • 下面详细介绍一下它是什么,它是如何工作的,以及何时考虑实施它。

android-inline-hook : https://github.com/bytedance/android-inline-hook/blob/main/README.zh-CN.md

  • 支持 Android 4.1 - 12 (API level 16 - 31)。

  • 支持 armeabi-v7a 和 arm64-v8a。

  • 支持针对函数整体的 hook,不支持对函数中间位置的 hook。

  • 支持通过“函数地址”或“库名 + 函数名”的方式指定 hook 位置。

  • 自动完成“新加载动态库”的 hook(仅限“库名 + 函数名”方式),hook 完成后调用可选的回调函数。

  • 可对同一个 hook 点并发执行多个 hook 和 unhook,彼此互不干扰(仅限 shared 模式)。

  • 自动避免代理函数之间可能形成的递归调用和环形调用(仅限 shared 模式)。

  • 代理函数中支持以正常的方式回溯调用栈。

  • 集成符号地址查找功能。

  • 使用 MIT 许可证授权。

  • shadowhook 字节跳动新开源的一个 hook 库,是一个针对 Android app 的 inline hook 库。其特性如下

【解惑】App处于前台,Activity就不会被回收了? : https://juejin.cn/post/7063068797304832030

  • 系统内存不足时,直接在内核层查杀(回收)进程,并不会考虑回收哪个Activity;

  • 进程内存不足时,如果此进程 Activity Task数 >= 3 且 使用内存超过3/4,会对 不可见 Task进行回收,每次回收 1个 Task,回收时机为每次gc

  • 现象:App 打开多个 Activity,然后手机晾一边,过一段时间后(屏幕常亮),点击回退,之前的 Activity 空白,然后重新加载了。App 在前台,不在栈顶的 Activity 却被干掉,但进程还健在

  • 结论

JankStats Goes Alpha : https://medium.com/androiddevelopers/jankstats-goes-alpha-8aff942255d5

  • 捕获每帧性能信息

  • 可以运行在用户设备上

  • 在应用程序出现性能问题时启用检测和报告发生的情况

  • 恋猫de小郭翻译版本:https://mp.weixin.qq.com/s/w8a1zWYgmmwrajLhEdGqhA

  • JankStats:「第一个专门用于检测和报告应用在用户设备上的性能问题而构建的 AndroidX 库。」,JankStats 是一个相对较轻的库,主要有三个目标:

Jetpack Compose 1.1 is now stable! :https://android-developers.googleblog.com/2022/02/jetpack-compose-11-now-stable.html

  • 都 1.1 版本了......

经验分享 && 推荐阅读

  1. 2022 年计划 : https://paradisehell.org/2022/02/06/plan-of-2022/

  2. 拆掉知识的墙 : https://mp.weixin.qq.com/s/G2ib7f87dCsRyEejaYk-6Q

  3. 5000字详解性能需求 : http://mp.weixin.qq.com/s?__biz=MzIxNDQ3NDI5OQ==&mid=2247486068&idx=1&sn=934b4db38a852bf5cde0cee972e59885

  4. 如何更好地工作 -#6 : https://geekplux.zhubai.love/posts/2102460687766016000

  5. 如何在某一领域成为世界顶尖 -#5 : https://geekplux.zhubai.love/posts/2097303049985957888

  6. Android 手机的自适应高刷,为什么没能讨好用户? : http://mp.weixin.qq.com/s?__biz=MjgzMTAwODI0MA==&mid=2652073883&idx=1&sn=1a654053c02ac036071c2d5b585e6f9d

  7. flomo 的 2021 和 2022 : https://mp.weixin.qq.com/s/6_LWweMCRdzUqbiq-2p-Tw

  8. 产品沉思录精选:如何管理需求优先级 | RICE方法 : https://mp.weixin.qq.com/s/IkIpPoFi1cIRaT2z5uQtHA

  9. 反向面试:你有什么问题要问面试官的? : https://github.com/yifeikong/reverse-interview-zh

开发 Weekly

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

  2. Kotlin Weekly #289 : https://mailchi.mp/kotlinweekly/kotlin-weekly-289

Podcast

  1. Episode 182: Large screens are a big deal : https://adbackstage.libsyn.com/episode-182-large-screens-are-a-big-deal

书籍推荐

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

工具推荐

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

定时打鸡血

a367e54fd20e27139c1f0216026d9f10.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值