新技术又来了?

Posted River_ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新技术又来了?相关的知识,希望对你有一定的参考价值。

一、Google官方一些新技术更新

在 2022 年 5 月 12 日 Google I/O 大会开幕,一起来看看相关更新吧。

Android版本更新

从上期的「android 13 开发者预览版 2」已经更新到「Android 13 Beta 2」。

按照计划,很快稳定版本就会发布了。

Android 13的改动对适配影响较大的主要还是聚焦于隐私与安全。

大家可以在这里查阅相关改动:

https://developer.android.google.cn/about/versions/13/summary

估计已经有同学收到了厂商的适配通知……

ps:厂商要求适配,不一定要提升应用的target版本,更多的是在目标版本适配上能够正常运行即可。

如果大家更关注 Android 12的适配,可以去搜索查看哈。

Flutter 3 正式发布

距离上次更新,Flutter 从 2.10 -> 3,Flutter 又发布正式版了,官方活跃度真高…

可以看下更新历程:

Flutter 3增加了对 macOS 和 linux应用的稳定支持,也就是说开发者可以通过一套代码,支持:Android、ios、web、Windows、macOS、Linux 6 个平台了。

学习性价比不是一般的高…

Jetpack 也迎来了一波更新

二、大厂对外文章分享

vivo 互联网技术

《Android 子线程 UI 操作真的不可以?》

相信这个点大家过往都看过一些文章了,基本都能说出一二,不过这篇文章从尝试将部分独立UI场景移动到其他线程来做性能优化,迈出了实践的第一步,具有一定的参考意义。

字节跳动技术团队

《抖音 Android 性能优化系列:Java OOM 优化之 NativeBitmap 方案》

聊到 OOM,肯定离不开app运行过程中的内存大户:图片。

在 Android 8.0以后图片Bitmap 像素占据的内存分配到了 Native heap,而在 Android 8.0以前大多数情况下是分配在 Java heap的。

Java heap相比于 Native heap可用空间就小多了,所以探索了一套方案,在低版本上依然将 Bitmap 像素也放到 Native 层分配。

不过方案并未开源,大家可以了解下原理。

《分析 Android 耗电原理后,飞书是这样做耗电治理的》

功耗对于 IM、视频类应用是比较关键的,这篇文章详细描述了飞书在耗电上做的探索与原理分析,主要是功耗相关市面上文章不多,值得收藏备用。

《抖音 Android 包体积优化探索:资源二进制格式的极致精简》

接上期的 class 字节码优化,开始对资源的二进制格式来做分析与精简了,精简主要是两方面:

  1. 字符串能不能占用得更小,例如andresuguard的原理;
  2. 是否有一些二进制信息可以通过一些手段去除;

文章对arsc文件以及 layout 文件做了非常细致的二进制分析,并针对性做了精简优化,但是方案并没有开源,只能学学原理,补充下知识面了。

注:上期的class字节码相关优化是开箱即用的,都在 Bytex 中。

淘系技术

《合理使用线程池以及线程变量》

描述了线程池原理,给出了很多线程相关 ThreadLocal 等使用建议与最佳实践,可以了解一哈。

阿里开发者

《关于技术能力的思考和总结》

很多同学可能都会有困惑:不写代码会不会丧失竞争力,会不会被年轻的同学替换掉这里的 。

其实很多人随着个人职业生涯的发展一定会面临类似的问题,例如我现在代码写得就不多了,有时候我也会想类似的问题,大家可以看下这篇文章来了解「什么是技术能力」。

货拉拉移动技术团队

没找到公众号,文章发布在掘金。

《货拉拉Android 包体积优化实践》

https://juejin.cn/post/7095565884122464292/

介绍比较系统了,从 Apk 构成分析,然后针对性的对各个方面进行优化。如果是包体积优化初期,这篇文章帮助会比较大。

《货拉拉Android稳定性治理》

https://juejin.cn/post/7100743641953468452

算是进行了一个比较大的专项,文章描述收益也是非常大:5% -> 0.02%,说一句质的飞跃不过分,文中提到了比较多的治理类型,大家可以了解下,详细的治理方案可能还是自己结合项目去做监控、分析与处理。

有道技术团队

《有道词典Android客户端包体积优化之路》

发现已经有 3 篇包体积相关优化文章了,主要还是对各种资源的优化。

文中提到的字体优化,可以关注下,很多应用都有内置字体,实际使用的字体却很少,常用汉字也就几千的,有的甚至只用里面的数字,做下裁减会小很多。

另外对于图片在编译期压缩,我看文章没开源方案,大家可以参考:

https://github.com/smallSohoSolo/McImage

基于此定制自己的压缩方案也不困难。

哔哩哔哩技术

《哔哩哔哩Android编译优化》

虾哥出品,一起来看看哔哩哔哩安卓项目编译优化之路。

历史分享:

  • 腾讯Bugly:对字符串匹配算法的一点理解
  • 爱奇艺:安卓APP崩溃捕获方案——xCrash
  • 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
  • 百度APP技术:Android H5首屏优化实践
  • 京东技术:任意URL跳转漏洞修复与JDK中getHost()方法之间的坑
  • 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  • 支付宝 App 构建优化解析:通过安装包重排布优化 Android 端启动性能
  • 支付宝 App 构建优化解析:Android 包大小极致压缩
  • 搜狐:深入理解Flutter多线程
  • 携程:从智行 Android 项目看组件化架构实践
  • Google: Flutter 您需要知道的知识点 | FAQ・第三期
  • 字节跳动:二维码扫描优化
  • 网易传媒技术团队:AOP技术在客户端的应用与实践
  • 网易大数据|互联网产品决策秘笈: AB测试
  • 高德:Android Native 内存泄漏系统化解决方案
  • 例说 Constraint Layout(三)—— 性能测试
  • Android P之Smart Linkify
  • 百度App组件化之路
  • 百度App网络深度优化系列《三》弱网优化
  • 头条 | 深入理解gradle框架之二:依赖实现分析
  • 美团| Probe:Android线上OOM问题定位组件
  • 美团| Android静态代码扫描效率优化与实践
  • 头条| 开源 | Scene:Android 开源页面导航和组合框架
  • 网易新闻客户端 H5 秒开优化
  • 解决支付宝包体积优化的遗留问题:运行时获取dexpc
  • Android篇 | 爱奇艺App启动优化实践分享
  • 二维码扫描优化及爱奇艺App的实践
  • 腾讯 Bugly:动态下发 so 库在 Android APK 安装包瘦身方面的应用
  • 天猫精灵:史上最全Android渲染机制讲解(长文源码深度剖析)
  • 花椒Android端自动化测试实践
  • 一种简单优雅的TextView行间距适配方案
  • Android 10分区存储介绍及百度APP适配实践
  • 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%
  • 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%(二)
  • 携程Android 10适配踩坑指南
  • 抖音包大小优化-资源优化
  • Gradle 与 Android 构建入门
  • AwCookieManager.nativeGetCookie crash 排查
  • 开源 | BoostMultiDex:挽救 Android Dalvik 机型APP升级安装体验
  • 另类 BadTokenException 问题分析和解决
  • LayoutInflater原理分析与复杂布局优化实践
  • 今日头条 Android ‘秒’ 级编译速度优化
  • 曾梦想 if-else 走天涯?看看“责任树模式”优化
  • 协程中的取消和异常 | 异常处理详解
  • 彻底弄懂浏览器缓存策略
  • 闲鱼如何在2个月内实现Android启动速度翻倍的?
  • Android Camera内存问题剖析
  • 有赞移动Crash平台建设
  • 贝壳APP Top Experience系列 | Android方法耗时统计工具
  • 抖音 Android 性能优化系列:Java 内存优化篇
  • QQ音乐Android编译提速之路
  • 移动端UI一致性解决方案
  • Android D8编译器“bug”导致Crash的问题排查
  • 今日头条 ANR 优化实践系列 - 设计原理及影响因素
  • 今日头条 ANR 优化实践系列 - 监控工具与分析思路
  • 全民k歌适配arm64-v8a方案
  • 全民K歌内存篇2——虚拟内存浅析
  • 全民K歌内存篇1——线上监控与综合治理
  • 一种按照library的维度进行Android包大小分析的方法和实践
  • 网易新闻构建优化:如何让你的构建速度“势如闪电”?
  • 设计稿(UI视图)自动生成代码方案的探索
  • 微信Android客户端的卡顿监控方案
  • 微信Android客户端的ANR监控方案
  • 如何在Android 8.0以下高效地复用图片?
  • 卡死 App 的神秘字符串,究竟是何方神圣(上)
  • 卡死 App 的神秘字符串,究竟是何方神圣(下)
  • 抖音Android无障碍开发知识总结
  • 西瓜视频稳定性治理体系建设三:Sliver 原理及实践
  • 西瓜卡顿 & ANR 优化治理及监控体系建设
  • Flutter 疑难杂症系列:键盘原理及常见问题解决方案
  • Flutter 疑难杂症系列:实现中文文本的垂直居中
  • 关于闲鱼的ANR治理,我有几条心得…
  • 京东:AOP技术在APP开发中的多场景实践
  • VIVO:手把手教你实现Android编译期注解
  • VIVO: Android模块化开发
  • 网易云音乐:AGP 升级
  • 网易云音乐:Android 开发,如何写出符合规范的异常处理代码
  • MOO音乐的Flutter实战总结之内存治理(上)
  • MOO音乐的Flutter实战总结之内存治理(中)
  • MOO音乐的Flutter实战总结之内存治理(下)
  • 全民K歌折叠屏适配
  • Android App 电量统计原理与优化
  • 快手 Android 内存分配器优化探索 (一)
  • 贝壳&掌链64位架构适配实践
  • 线程:“你可能把握不住”—— Android 平台下线程导致的内存问题
  • Android性能优化之Android 10+ dex2oat实践
  • Android项目架构设计深入浅出
  • 百度APP视频播放中的解码优化
  • Android与HEIF格式图片适配方法
  • 快手 Android 内存分配器优化探索 (二)
  • Java线程池面试要点
  • Android插件化中资源错乱的解决方案
  • 得物App ANR监控平台设计
  • 字节码引用检测原理与实战
  • 抖音Android包体积优化探索:从Class字节码入手精简DEX体积
  • 一文读懂直播卡顿优化那些事儿
  • Android 系统 Bar 沉浸式完美兼容方案
  • APK修改神器:插桩工具 DexInjector
  • 向工程腐化开炮 | proguard治理
  • 向工程腐化开炮 | manifest治理
  • 向工程腐化开炮:Java代码治理
  • 向工程腐化开炮|资源治理
  • 向工程腐化开炮|动态链接库so治理
  • APM 页面加载耗时校准
  • 淘宝 Android 帧率采集与监控详解
  • 什么是好的技术氛围?
  • 百度APP Android包体积优化实践(一)总览
  • 抖音 Android 性能优化系列:启动优化实践
  • 一次关于架构的“嘴炮”

三、【开源】阿里开源一套轻量级的纯原生动态化卡片跨端解决方案GaiaX

https://github.com/alibaba/GaiaX

相比于其他跨端方案,主要优势就是轻量、纯原生。

原理上,将各个组件的样式、层级关系、事件、数据等都通过特定的语言进行描述下发,端上由GaiaX SDK 完成后续的解析、渲染等工作。

四、【开源】Flutter 嵌套地狱?不存在的,ConstraintLayout 来解救!

ConstraintLayout虽然难用,但是以其强大的排版能力,以及在特定场景下性能优势,在 Android 原生开发过程中使用甚广。

Flutter很多同学编写的代码的印象经常停留在嵌套多的情况,甚至戏称「嵌套地狱」,当然也有很多同学也给出了一些解决方案,比如通过封装来减少嵌套。

最近和hackware 聊天,他设计并开源了Flutter_ConstraintLayout:

https://github.com/hackware1993/Flutter_ConstraintLayout

你可以在 Flutter来使用强大的ConstraintLayout啦。

详细介绍:

《Flutter 嵌套地狱?不存在的,ConstraintLayout 来解救!》

五、【开源】轮子哥开源AndroidGithubBoss

https://github.com/getActivity/AndroidGithubBoss

在某一天,我突发奇想,Android 做开源的大佬很多,但是大多数人无法知道都有哪些人,于是乎我开源了一个项目,用于将 Android 行业中的开源大佬聚齐起来,大家不仅可以认识到这些开源大佬,还能知道他们有哪些优秀的开源作品,可以供我们学习和参考。

https://github.com/getActivity/AndroidGithubBoss

看了下其实很多排行榜的同学更新都缓慢下来了,随着年纪的增长,大家空闲的精力都越来越少了…

好了,如果你对官方、大厂发布的技术文章和开源项目感兴趣,那么欢迎关注本号,本号将持续为你推送所有大厂移动端对外动态。

这里就还给大家分享一套完备的知识体系,整体参照了各家一线大厂高工岗位的招聘要求及岗位技能需求,并且每个具体的知识节点还附带有一整套体系化的学习资料、笔记进行辅助,帮助你把所学的知识点全部串联起来!

如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。

部分内容展示如下

01.Android必备底层技术:

  • Java序列化:Serializable原理、Parcelable接口原理、Json、XML
  • 注解、泛型与反射:自定义注解、注解的使用、泛型擦除机制、泛型边界、Java方法与Arm指令、Method反射源码、invoke方法执行原理
  • 虚拟机:JVM垃圾回收器机制、JVM内存分配策略、Android虚拟机与JVM底层区别、虚拟机底层Odex本地指令缓存机制、虚拟机如何分别加载class与object、虚拟机类加载模型
  • 并发:Java线程本质讲解、线程原理、线程通信、UnSafe类、线程池
  • 编译时技术:OOP面向切面之AspectJ、字节码手术刀JavaSSit实战、字节码插桩技术(ASM)实战
  • 动态代理:动态代理实现原理、动态代理在虚拟机中运行时动态拼接Class字节码分析、ProxyGenerator生成字节码流程
  • 高级数据结构与算法:HashMap源码、ArrayList源码、排序算法
  • Java IO:Java IO体系、IO文件操作

02.Framework:

  • Binder:Linux内存基础、Binder四层源码分析、Binder机制、Binder进程通信原理
  • Handler:Loop消息泵机制、Message解析
  • Zygote:init进程与Zygote进程、Zygote启动流程、Socket通信模式、APP启动过程
  • AMS:ActivityThread源码分析、AMS与ActivityThread通信原理、Activity启动机制
  • PMS:PMS源码、APK安装过程分析、PMS对安装包的解析原理
  • WMS:PhoneWindow实例化流程、DecorView创建过程、ViewRootImpl渲染机制

03.Android常用组件:

  • Activty:Activity管理栈与Activity的启动模式、Activity生命周期源码分析
  • Fragment:Fragment生命周期深入详解、Fragment事务管理机制详解、性能优化相关方案
  • Service:Service启动模式分析、Service管理与通信方案、Service生命周期底层详解

04.高级UI:

  • UI绘制原理:setContentView()方法下到底做了什么、AppCompatActivity与Activity的区别、UI测量、布局、绘制的底层执行流程
  • 插件换肤:LayoutInflater加载布局分析、Android资源的加载机制、Resource与AssetManager
  • 事件分发机制原理:事件执行U形链与L形链、事件拦截原理
  • 属性动画:VSYNC刷新机制、ObjectAnimator与ValueAnimator源码讲解、Android属性动画:插值器与估值器
  • RecycleView:布局管理器LayoutManager详解、回收池设计思想、适配器模式原理
  • 高阶贝塞尔曲线

05.Jetpack:

  • Lifecycle:Lifecycle源码、Lifecycle高阶应用
  • ViewModel:ViewModel源码、ViewModel应用技巧
  • LiveData:LiveData源码
  • Navigation:Navigation源码
  • Room:Room源码、Room+LiveData监听数据库数据变更刷新页面原理
  • WorkManager内核
  • Pagging原理
  • DataBinding:单向绑定、双向绑定、如何与RecyclerView的配合使用、底层原理

06.性能优化:

  • 启动优化:系统启动原理、Trace工具分析启动卡顿、类重排机制、资源文件重排机制
  • 内存优化
  • UI渲染优化:UI层级规范及对UI加载的影响、UI卡顿原因及修复、UI绘制、布局、测量原因以及处理方案
  • 卡顿优化:造成卡顿的原因分析、内存抖动与GC回收、回收算法
  • 耗电优化
  • 崩溃优化:项目崩溃异常捕获、优雅的异常处理方案、如何避免异常弹框
  • 安全优化:APP加固实现(防反编译,dex加固)、https防抓包机制(数据传输加载,客户端服务器端双向加密校验)
  • 网络优化:serializable原理、parcelable接口原理、http与https原理详解、protbuffer网络IO详解、gzip压缩方案
  • 大图加载优化:Glide巨图加载机制原理分析、大图多级缓存实现方案
  • 多线程并发优化
  • 储存优化:Android文件系统-sdcard与内存存储、Shared Preference原理、MMAP内存映射
  • 安装包优化:shrinkResources去除无用资源、合理设置多语言、webp实现图片瘦身、合理配置armable-v7的so库、Lint检查工具实践

如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。

07.音视频:

  • C/C++:数据类型、数组、内存布局、指针、函数、预处理器、结构体、共用体、容器、类型转换、异常、文件流操作、线程
  • H.265/H.265:音视频格式封装原理、编码原理、视频流H264的组装原理切片NAL单元、视频流H264码流分析、切片与宏快,运动矢量、信源编码器、高频滤波、帧间拆分与帧内预测、CTU,PU TU编码结构、DSP芯片解码流程、MediaPlayer与DSP芯片交互机制、投屏架构、MediaProjection与MeidiaCodec交互机制、H265码流交换
  • MediaCodec:dsp芯片、编解码器的生命周期、解码器中输入队列与解析队列设计思想、MediaCodec中平缓解码解析、MediaExtractor 多路复用、MediaMuxer合成器、MediaFormat格式
  • 音视频剪辑:视频剪辑、音频剪辑、音频合成、音谱显示、视频倒放
  • 音视频直播:硬编码、软编码、native实现rtmp推流、摄像头预览帧编码NV21转YUV、视频画面封装拼接Packet包、音频流数据拼接Packet包、RtmpDump实时同步发送音视频数据、MediaProjection、Medicodec编码H264码流、rtmp推流
  • OpenGL与音视频解码:OpenGL绘制流程、矩阵、Opencv详解、人脸识别效果实现
  • OpenGL特效:CPU与GPU运行机制详解、世界坐标,布局坐标,与FBO坐标系、图像镜像与旋转处理、人脸定位与关键点定位、大眼效果、贴纸效果、美颜效果
  • FFmpeg万能播放器:FFmpeg结构体、声音播放原理、Surface的渲染、像素绘制原理与对齐机制、音视频同步原理、视频播放器整体架构
  • Webrtc音视频通话:WebRtc服务端环境搭建与Webrtc编译、1v1视频通话实现方案、群聊视频通话实现思路、多对多视频会议实现、1V1音视频通话实现

08.开源框架原理:

  • Okhttp
  • Retrofit
  • RxJava
  • Glide
  • Hilt
  • Dagger2
  • EventBus
  • 组件化、插件化、热修复等

09.Gradle:

  • Groovy语法
  • Gradle Android插件配置
  • Gradle实践等

10.kotlin:

  • Kotlin语法
  • 扩展使用
  • 进阶使用
  • 实践等

11.Flutter:

  • Dart语法
  • UI
  • 进阶使用
  • 优化
  • 实践等

12.鸿蒙:

  • Ability组件
  • 分布式任务
  • 事件总线
  • 鸿蒙线程
  • UI自定义控件等

如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。

Android路漫漫,共勉!

以上是关于新技术又来了?的主要内容,如果未能解决你的问题,请参考以下文章

DDD应用架构内部分享-没错我又来了

买专栏送图书,我们又来了!!!

福利又来了:充电几秒钟,通话一礼拜

微信红包封面又来了,速度领取!

微信红包封面又来了,速度领取!

CountDownLatch和CyclicBarrier 傻傻的分不清?超长精美图文又来了