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

IMG_3344.png

AICore

img

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 Home page
  • A New Foundation for AI on Android

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

  • AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?

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

  • Introducing Gemini: our largest and most capable AI model

Studio Bot

stuidobot.jpg

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 性能分析器?

ezgif.com-video-to-gif.gif

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

  • https://developer.android.com/studio/preview/studio-bot?hl=zh-cn

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

  • https://juejin.cn/post/7231997803559141413

New Android Studio

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

New UI

studio-hero_2880.png

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

主要更改如下:

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

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

设备镜像

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

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

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

“Running Devices”界面

Compose 的全力支持

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

img

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

img

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

  • https://developer.android.com/studio?utm_source=android-studio&hl=zh-cn
  • https://developer.android.com/studio/releases?hl=zh-cn

ANDROID 14

ci1cf35b34t8v9tgdmv0.png

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 for Wear OS 1.1 推出稳定版: 了解新功能!

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

  • Jetpack Compose 2023 年 8 月版最新动态

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

Image

  • 全面了解实时编辑,即刻加速开发流程

KOTLIN

Exploring Kotlin 1.9.0: What's New in the Latest Release | by Nandhu Raj |  Stackademic

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

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

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

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

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

  • Kotlin 1.9.0 现已发布 | 官方博客

鸿蒙

img

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

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

  • 鸿蒙Harmony谈了这么久,和Android到底啥区别?

但不得不说如今的鸿蒙进度飞快,无论是应用平台还是 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 年成功、顺利,咱们明年再见~

参考资料 & 文章推荐

  • AICore Home page

  • A New Foundation for AI on Android

  • AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?

  • Introducing Gemini: our largest and most capable AI model

  • Studio Bot

  • Studio Bot - 让 AI 帮我写 Android 代码

  • Android Studio releases

  • 最新版发布 | Android 14 现已正式发布至 AOSP!

  • 深度解读 Android 14 重要的 8 个新特性~

  • Compose for Wear OS 1.1 推出稳定版: 了解新功能!

  • Jetpack Compose 2023 年 8 月版最新动态

  • 全面了解实时编辑,即刻加速开发流程

  • Kotlin 1.9.0 现已发布 | 官方博客

  • 鸿蒙Harmony谈了这么久,和Android到底啥区别?

  • 鸿蒙终于不套壳了?纯血 HarmonyOS NEXT 即将到来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/282225.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯C/C++程序设计——成绩统计

题目描述 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是一个 0 到 100 的整数。 如果得分至少是 60 分&#xff0c;则称为及格。如果得分至少为 85 分&#xff0c;则称为优秀。 请计算及格率和优秀率&#xff0c;用百分数表示&am…

SpringSecurity登录逻辑快速集成及原理探查

框架简介 Spring 是非常流行和成功的 Java 应用开发框架&#xff0c;Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。 一般来说&#xff0c;Web应用的安全性包括用户认证&#xff08;Authe…

Java学习——设计模式——介绍

文章目录 设计模式介绍UML的类图表示类与类之间关系的表示关联关系聚合关系组合关系依赖关系继承关系实现关系 设计模式介绍 设计模式design patterns&#xff0c;指在软件设计中&#xff0c;被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码&#xff0c;提…

Python序列之集合

系列文章目录 Python序列之列表Python序列之元组Python序列之字典Python序列之集合&#xff08;本篇文章&#xff09; Python序列之集合 系列文章目录前言一、集合是什么&#xff1f;二、集合的操作1.集合的创建&#xff08;1&#xff09;使用{}创建&#xff08;2&#xff09;…

电商大数据商品采集:阿里巴巴1688电商网站货源产品信息采集

商品详情大数据采集:阿里巴巴1688电商网站货源产品信息采集 ------------- 数据采集满足多种业务场景&#xff1a;适合产品、运营、销售、数据分析、政府机关、电商从业者、学术研究等多种身份 职业。 舆情监控&#xff1a;全方位监测公开信息&#xff0c;抢先获取舆论趋势。 市…

计算机组成原理复习4

习题 练习题 下列不属于系统总线的为&#xff08;&#xff09; a.数据总线 b.地址总线 c.控制总线 d.片内总线 D 系统总线中地址总线的功能是&#xff08;&#xff09; a.选择主存单元地址 b.选择进行信息传输的设备 c.选择外存地址 d.指定主存和I/O设备接口电路的地址 D 解…

【操作系统xv6】学习记录1

前置说明&#xff1a; git-v9版本&#xff1a;git clone https://github.com/mit-pdos/xv6-public/tree/xv6-rev9 bili:https://www.bilibili.com/video/BV15r4y1z75F 深圳大学罗秋明老师的课程 我自己用的wsl2的ubuntu18 无桌面版本 make qemu-nox bug 起初在双系统的ubuntu…

数据模型设计

数据模型设计&#xff0c;可以理解为数据库中的表结构设计。 我们在设计器中创建的数据模型&#xff0c;也称为实体。我们将前端页面中传过来的数据保存到对应的实体中&#xff0c;即为将前端数据保存到了数据库中。 1 、实体与枚举的创建 1 .1 创建供应商 supplier实体 在左…

旁挂二层隧道转发小实验

WLAN配置 旁挂二层隧道转发 1.基础配置&#xff1a; SW1: system-view vlan batch 100 to 101interface GigabitEthernet 0/0/1 port link-type trunk port trunk pvid vlan 100 //打上管理VLAN的100标签 port trunk allow-pass vlan 100 101interface GigabitEthernet 0/…

蓝桥杯C/C++程序设计——单词分析

题目描述 小蓝正在学习一门神奇的语言&#xff0c;这门语言中的单词都是由小写英文字母组 成&#xff0c;有些单词很长&#xff0c;远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词&#xff0c;他准备不再完全记忆这些单词&#xff0c;而是根据单词中哪个字母出…

mount -a 出错任然重启问题

问题来源 在磁盘分区挂载过后&#xff0c;为了创建的新分区的能够永久挂载&#xff0c;我们常常会在/etc/fstab下写下配置文件&#xff0c;使其永久挂载。但是该配置一旦写错&#xff0c;就面临这死机问题&#xff0c;为此&#xff0c;以下操作针对该问题进行 解决方案&#x…

WSL使用VsCode运行cpp文件

文章目录 缘起主要步骤参考 缘起 今天在阅读《C20设计模式-可复用的面向对象设计方法&#xff08;原书第2版&#xff09;》的时候&#xff0c;遇到代码想要运行一下&#xff0c;于是决定使用wsl下的vscode配置cpp的环境。 主要步骤 1.安装gcc和g编译器 打开命令行输入wsl&am…

linux驱动(一):led

本文主要探讨210的led驱动相关知识。 驱动 操作系统驱动硬件的代码,驱动上层是系统调用API,下层是硬件 宏内核&#xff1a;内核整体上为一个过程实现,运行在同一地址空间,相互调用简单高效 微内核&#xff1a;功能为独立过程,过程间通过IPC通信 …

从实际工作情况,介绍嵌入式(MCU)软件开发常用(通用)工具

目录 前言 1、代码阅读及编辑工具&#xff08;VSCode、Understand&#xff09; 2、代码对比工具&#xff08;Beyond Compare&#xff09; 3、代码仓库相关工具&#xff08;Git、SVN、Tortoise&#xff09; 4、文本编辑器&#xff08;Notepad&#xff09; 5、电脑文件搜索工…

使用递归实现深拷贝

文章目录 为什么要使用递归什么深拷贝具体实现基础实现处理 函数处理 Symbol处理 Set处理 Map处理 循环引用 结语-源码 为什么要使用递归什么深拷贝 我们知道在 JavaScript 中可以通过使用JSON序列化来完成深拷贝&#xff0c;但是这种方法存在一些缺陷&#xff0c;比如对于函数…

「Kafka」生产者篇

「Kafka」生产者篇 生产者发送消息流程 在消息发送的过程中&#xff0c;涉及到了 两个线程 ——main 线程和Sender 线程。 在 main 线程中创建了 一个 双端队列 RecordAccumulator。 main线程将消息发送给RecordAccumulator&#xff0c;Sender线程不断从 RecordAccumulator…

<软考高项备考>《论文专题 - 37 采购管理(2) 》

2 过程1-规划采购管理 2.1 问题 4W1H过程做什么记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程作用&#xff1a;确定是否从项目外部获取货物和服务&#xff0c;如果是&#xff0c;则还要确定将在什么时间、以什么方式获取什么货物和服务为什么做为如何采购…

移动端开发框架mui代码在安卓模拟器上运行(HbuilderX连接到模拟器)

开发工具 HBuilder X 3.8.12.20230817 注意&#xff1a;开发工具尽量用最新的或较新的。太旧的版本在开发调试过程中可能会出现莫名其妙的问题。 1、电脑下载安装安卓模拟器 我这里使用的是 夜神模拟器 &#xff0c;也可以选择其他安卓模拟器 夜神模拟器官网&#xff1a;夜神安…

idea实现Java连接MySQL数据库

1.下载MySQL并安装 首先如果没有mysql的需要先下载MySQL&#xff0c;可以看这个教程&#xff1a; Mysql超详细安装配置教程(保姆级)_mysql安装及配置超详细教程-CSDN博客 2.下载mysql 的jdbc驱动 官网&#xff1a;MySQL :: Download Connector/J 解压并将驱动jar包导入id…

ThinkPad T14s Gen3,ThinkPad X13 Gen3(21BS,21BQ,21BR,21BN)原装出厂Win11系统

lenovo联想ThinkPad系列T14s/X13 Gen3笔记本电脑原装Windows11预装OEM系统镜像 链接&#xff1a;https://pan.baidu.com/s/1yhRMIjlkFvt86aLioOoNOA?pwdfrsp 提取码&#xff1a;frsp 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、联想…