万字盘点 Android 领域在 2023 年的重要技术:AI, 14, Compose, 鸿蒙...

AICore

2022 年底横空出世的 GPT-3.5 引发了全球的大模型 LLM 狂潮。作为在 AI 领域耕耘多年的巨头,Google 自然不会坐视不管,于 2023 年底之际发布了超越 GPT-4 的 Gemini 系列模型,其在多模态领域的表现令无数人震撼。

而对于 Android 开发者而言,最振奋人心的消息莫过于 Gemini Nano 模型将内置到 Android 系统当中,并开放给开发者使用,这套机制便成为 AICore

具体的 Android 将会内置一个名为 "Google AI Services" 的系统 App,可以让开发者便捷访问端侧内置的 AI 模型(on-device model)。

通过 AICore 可以对类似 Gemini Nano 这种端侧模型实现模型管理、运行时调用、安全检查、多模态等能力,并保留相应的 API 给开发者进行灵活的运用。当然这需要端侧模型本身针对移动芯片等设备做专门的优化。

有了这样的模型支撑,第三方 App 来说可以将 AI 与已有的很多场景相结合、优化体验,甚至碰撞出不少新的想法:

  • 高质量文本摘要、问题回答、问题扩展
  • 上下文智能回复
  • 高级校对和语法纠正
  • 等等

AICore 的目标在于将 AI 能力规范化、接口/协议统一化,方便开发者进行 LLM 的选择、调整以及应用创新。再借助数以亿计的 Android 设备的呈现,必将加速 AI 技术的发展和普及。

作为 AOSP 的另一个分支 - Android Automotive OS 也将从 AICore 中受益。从 Automotive 延伸出来的车载机系统越来越多,只要芯片兼容,未来都可以利用 AICore 技术进行很多车载场景的拓展,尤其可以在语音助手、智能推荐、自动驾驶等方面引发出无限想象。

更多信息可以参考官方针对 AICore 的介绍:

或者参考笔者此前写的 AICore 分析:

对于 Gemini 模型,可以参考官方的 blog:

Studio Bot

Github 基于 GPT 推出的 Copilot 等一系列 AI 编程助手让 Google 也感受到了压力,今年 Google I/O 2023 的时候,郑重推出了 Android Stuido Bot

Studio Bot 是旨在帮助处理编码场景的 LLM。它紧密的集成在 Android Studio 中,用对话的形式进行呈现,只需要非常简单的操作便可以进行问题解答、编码建议,甚至直接生成代码。

它可以提供非常多 Android 平台强相关的技术支持,比如:

  • 如何为我的应用添加 Camera支持?
  • 我想创建一个使用 Room 框架的数据库。
  • 可以提醒我 javadocs 的格式吗?
  • 什么是深色主题?
  • 在 Android 上获取位置信息的最佳方式是什么?

而且 Studio Bot 能够记住对话的上下文,因此您还可以向它询问后续问题,例如:

  • 可以给我使用 Kotlin 的代码吗?
  • 您能告诉我如何在 Compose 中执行此操作吗?

当然,它还能听懂针对 Android Studio 工具的询问,例如:

  • 如何分析应用中的卡顿?
  • 在哪里可以找到 CPU 性能分析器?

可以查看官方的对于 Studio Bot 的介绍和视频演示:

国内的这篇文章对于 Studio Bot 的介绍也比较详尽:

New Android Studio

除了加入了 Stuido Bot 这样应景的工具以外,Android Studio 不断保持着升级和优化。

New UI

首先要提到的是新版 Android Studio 提供了更加简洁的 UI 视图,降低了视觉复杂性,让用户更轻松地使用基本功能,并酌情显示复杂功能,从而打造现代、简洁的外观和风格。

主要更改如下:

  • 简化了主工具栏,新增了 VCS、Project 和 Run widget
  • 工具窗口采用了新的布局
  • 新增了一些浅色主题和深色主题,带有对比鲜明且色调一致的调色板
  • 新增了图标集,更易于辨识

简而言之就是四新:新工具栏、新工具窗口、新主题、新图标。

设备镜像

现在 Android Studio 支持在 Running Devices 窗口中投屏实体设备了,通过将设备的显示屏直接流式传输到 Android Studio,将可以直接在 Studio IDE 中执行例如启动应用、旋转屏幕、折叠和展开手机、更改音量等操作。

这是一个非常好用的功能,开发者从此无需在 AS 和实体设备之间来回切换了,大部分的操作都可以在 AS 内直接完成,将大大提高开发的效率。

PS.以前惯用的 screen copy 工具是不是也可以下岗了?

Compose 的全力支持

随着 Compose 的日渐成熟,AS 也没有掉队,持续地推出好用的调试工具。正如 Compose 最新的 Multipreview 功能,AS 现在支持针对多种场景下的 Preview 展示。

使用过 Compose 开发的同学应该有过这种体验:如果 Compose 的某些部分意外重组,有时很难定位到原因。现在在可组合函数上设置断点时,AS 的调试界面将会列出可组合项的参数及其状态,以便更轻松地识别到可能导致重组的源头。

其他 Android Stuido 带来的新特性还有很多,大家可以在如下 page 查看更多细节和持续关注:

ANDROID 14

Google 宣称 Android 14 是迄今为止最振奋人心的版本,让我们看一看一年一度的 Android 盛会又带来了什么改变。

首要提及的便是 Behaviour changes,这也是开发者们 OSV 工作的重点,无论 Android 升级了啥,行为变更是绕不过去的点。

  • 强制要求使用 foreground service 的情况下,必须指定至少一个前台服务类型 foregroundServiceType。如果没有指定,那么在调用 startForeground() 方法的时候,将会抛出 MissingForegroundServiceTypeException 异常。并在 Android 10 引入的服务类型里新增了 health、remoteMessaging 等类型
  • 动态注册的 broadcast receiver 必须指定是否对外可见,即 RECEIVER_EXPORTEDRECEIVER_NOT_EXPORTED,确保开发者清楚本地的广播接收器是否需要接收外部事件,避免遭受到外部 broadcast 的恶意攻击
  • 陪伴开发者多年的 overridePendingTransition 下线了,正式进入非推荐 API 名单,取而代之的是 overrideActivityTransition。名称上看貌似没太大区别,实则变化确实不太多,主要区别是为了匹配未来 Android 平台上重要的返回手势
  • 使用了动态加载程序(其他 Jar)的代码的话,需要调用 setReadOnly() 指定为只读状态,否则系统将会抛出异常
  • 此前在特殊情况下会调用 killBackgroundProcesses() 的方法在 14 及以后只能终止自己,如果传入其他应用程序的包名,不会对其他应用程序产生影响,Logcat 也会输出相应的错误提示:Invalid packageName: xxx
  • Runtime Permission 是个逢升必改的 topic,本次引入了针对选中部分媒体 image/video 的访问权限:READ_MEDIA_VISUAL_USER_SELECTED,进行了媒体库的权限细分。需要开发者对原有的媒体文件访问逻辑进行相应的适配
  • 引入 cgroup 机制支持冻结缓存应用,增强杀进程能力,降低后台整体的 CPU 占用和内存消耗。除了常规的 Android 应用生命周期 API (如前台服务、JobSchedulerWorkManager) 之外的后台工作将被禁止,受到影响

当然,Android 14 还推出了众多 New Features,这块其实容易被大家忽略,实则更重要。理由是 New Features 不像 Behavior Changes:OS 升级之后如果运行上出了问题,调查下文档就知道 14 变更了什么、如何改。而 New Features 作为新的功能、API,并不会影响 App 原来的逻辑,但实实在在地解决了痛点、优化了体验、提供了一个又一个特色能力,从长远来讲是更有价值的。

主要有这么几块新特性:

  1. 添加专用 ScreenShotCallback 来规范监听截屏的开发方式
  2. 添加全新 API 来简化 Hightlight 的实现方式
  3. 重新设计 Back Arrow 和支持目标界面的预览 Predictive Back Preview 来统一、加强 Android 平台上 Back 导航的体验
  4. 支持 Custom Share Action 的标准分享,来满足丰富、灵活的分享需求
  5. 引入全新的区域设置 Locale Preferences 来改善用户习惯的体验
  6. 引入全新的、独立的语法性别 Grammar Gender 来提高文本表述的准确度
  7. 引入特定 API Path Interator 来方便开发者对 Path 历史进行回溯
  8. 通过改善 Package Installer 来全方位提升 App 安装、更新方面的细节体验

可以看到 Android 14 对隐私、安全方面还是一如既往地重视:持续地提出新的 API 和开发要求;并从底至上地优化系统的进程调度来提升整体的性能和效率;同时在截屏、返回、文本显示、分享、地区/语言、下载/更新等多个实用场景进行了全新 API 的设计,满足了用户需求的同时兼顾到开发者适配的高效。

更加完整的细节可以参考官方的发行 blog:最新版发布 | Android 14 现已正式发布至 AOSP!

以及笔者针对新特性 topic 单独整合的详细说明:深度解读 Android 14 重要的 8 个新特性~

Compose

对于 Android 平台如今最重要的 UI 框架 Compose 而言,今年是重大发展的一年。

首先在 2023 年初推出了 Compose for Wear OS 1.1 稳定版,在 Phone、Pad 以外逐步开拓 Wear 等其他硬件场景。

然后在下半年对 Compose 版本进行了重要升级,到了 Jetpack Compose 1.5。将修饰符的性进行大幅提升,较构建之初提升高达 80% ;并对内存的使用进行了改进,尤其是在图形堆栈和矢量资源加载方面,减少了 Compose 的内存占用;同时针对常用的文本控件迁移到了新的渲染系统当中,使得初始 Compose 的时间平均提高了 22%,并在一项涉及文本的复杂布局的基准测试中提升高达 70% 等等

以及在 9 月份给 Android Studio 引入了实时编辑功能,加速 Compose 的开发流程。具体的是实时将代码更改部署到实体设备或模拟器上运行的应用中,能够更改应用界面并即时查看更改对应用运行产生的影响,从而更快地迭代,提高开发效率。

KOTLIN

作为 Android 平台首推的开发语言,Kotlin 的发展不容忽视。

今年 7 月份,Kotlin 1.9 重大版本正式发布,Kotlin Multiplatform 也进入了稳定阶段。

以下是此版本的一些亮点:

  • 开放范围的稳定 ..< 运算符
  • 枚举类值函数的稳定替换
  • Kotlin/Native访问常量时不再初始化对象
  • Kotlin Multiplatform 中的 Gradle 配置缓存预览以及对 Android 目标支持的更改
  • K2 编译器将在 Kotlin 2.0 中进入稳定状态

完整的变化可以参考官方文章:

鸿蒙

我知道肯定有朋友对于我把鸿蒙这个话题纳入到 Android 技术盘点里存在异议:你怎么能说鸿蒙是 Android 呢

其实早在 3 年前笔者便对鸿蒙上 IDE 的使用、App 的开发方式以及程序的构成进行了分析,感兴趣的可以查看:

但不得不说如今的鸿蒙进度飞快,无论是应用平台还是 IDE、API 都愈加成熟。

虽然鸿蒙还没正式移除 Android 内核,但鸿蒙 NEXT 计划正有条不紊地推进着,包括美团、支付宝、喜马拉雅等一众大厂正在对接鸿蒙平台的原生开发。

毫无疑问的一点是:无论是 IDE 工具还是 ArkUI 体系,都和 Android 原生开发有着千丝万缕的联系和相似性,Android 开发者在鸿蒙开发的入门、上手上都有着非常大的优势。

所以,大家不用纠结于鸿蒙是不是 Android 的结论,也不用唱衰鸿蒙的发展。如果有兴趣、有机会,用你已有的 Android 移动端的思维和经验尝试起来、武装自己,和咱们的职业生涯并不冲突。

小郭写的鸿蒙终于不套壳了?纯血 HarmonyOS NEXT 即将到来有针对鸿蒙 NEXT 详尽的介绍,可以参考一二。

结语

总的来说,今年 Android 领域的技术发展可以总结为这么几点:

  • LLMAIGC 大浪潮下作为 AI 先驱的 Google 想在存量最大的 Android 生态里做点延伸即 AICore,方便开发者的同时更快地推广自己的 AI 技术
  • 为应对 AIGC 的应用态势以及 Android 本身的开发需要,在 Android Stuido 里引入 Studio Bot 和更多好用、应景的 Compose 等工具
  • 必须要做的、长足的 Android 14 升级,往更加成熟、安全、稳定的方向去发展
  • 逐步优化和迈向更多平台的 Compose UI 工具包和 Kotlin 语言
  • 国内势头正盛的鸿蒙平台给国内移动端带来的新技术方向

当然,未单独介绍的 Flutter 跨平台和 Jetpack 家族也有着不少动作:

  • Flutter 3.16 和 Dart 3.2 也迎来了大量更新,为改善并构建一个美好的用户体验而做出努力
  • Jetpack WindowManager 1.1 稳定版发布,解锁了可折叠设备和大屏设备的开发场景
  • Jetpack Car 1.4.0-alpha01 版发布,为想要在低版本上构建 Android Auto 和 Android Automotive OS App 的开发者提供可能
  • Jetpack CameraX 1.3 版本推出,这个库的实用性也更上一层楼:提供借助双并发摄像头功能,应用可以同时操控两个摄像头的功能;新增了对 10 位视频流及 HDR 配置文件的支持,以便用户能够拍出细节、色彩、对比效果更胜以往的视频;提供了一些钩子 (hooks) 来实现高级或自定义特效

Android 平台技术每年的变化很多、新东西很繁杂,不一定都得掌握,但至少需要了解一下。

祝每一位 Android 相关从业者 2024 年成功、顺利,咱们明年再见~

参考资料 & 文章推荐

相关推荐
sanzk12 分钟前
华为鸿蒙应用开发
华为·harmonyos
热爱跑步的恒川2 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
SoraLuna5 小时前
「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
macos·ui·harmonyos
ClkLog-开源埋点用户分析6 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos
mg6686 小时前
鸿蒙系统的优势 开发 环境搭建 开发小示例
华为·harmonyos
lqj_本人6 小时前
鸿蒙next选择 Flutter 开发跨平台应用的原因
flutter·华为·harmonyos
lqj_本人6 小时前
使用 Flutter 绘制一个棋盘
harmonyos
帅得不敢出门8 小时前
安卓设备adb执行AT指令控制电话卡
android·adb·sim卡·at指令·电话卡
lqj_本人9 小时前
Flutter&鸿蒙next 状态管理框架对比分析
flutter·华为·harmonyos
我又来搬代码了10 小时前
【Android】使用productFlavors构建多个变体
android