万字盘点 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.mzph.cn/news/588126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我在Vscode学OpenCV 图像处理四(轮廓查找 cv2.findContours() cv2.drawContours())-- 待补充

图像处理四&#xff08;轮廓查找&#xff09; 一、前言1.1 边缘检测和轮廓查找的区别是什么1.1.1 边缘检测&#xff1a;1.1.2 轮廓查找&#xff1a; 1.2 边缘检测和轮廓查找在图像处理中的关系和流程 二、查找并绘制轮廓2.1 cv2.findContours()&#xff1a;2.1.1 详细介绍&…

LVS那点事

LVS 原理 IPVS LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的&#xff0c;IPVS 是 LVS 集群系统的核心软件&#xff0c;它的主要作用是&#xff1a;安装在 Director Server 上&#xff0c;同时在 Director Server 上虚拟出一个 IP 地址&#xff0c;用户必须通过这个虚拟的…

【ROS2】MOMO的鱼香ROS2(二)ROS2入门篇——ROS2初体验

ROS2初体验 引言专业术语认识1 认识ROS21.1 ROS2版本对照表1.2 ROS与ROS2对比1.3 ROS2架构1.3.1 DDS实现层1.3.2 ROS中间件接口&#xff08;RMW&#xff09;1.3.3 ROS2客户端库 RCL 2 安装ROS22.1 ROS安装&#xff08;一键式&#xff09;2.2 手动安装ROS22.2.1 添加ROS软件源2.…

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

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

java虚拟机内存管理

文章目录 概要一、jdk7与jdk8内存结构的差异二、程序计数器三、虚拟机栈3.1 什么是虚拟机栈3.2 什么是栈帧3.3 栈帧的组成 四、本地方法栈五、堆5.1 堆的特点5.2 堆的结构5.3 堆的参数配置 六、方法区6.1 方法区结构6.2 运行时常量池 七、元空间 概要 根据 JVM 规范&#xff0…

在Spring Cloud中使用Ribbon完成一个简单的负载均衡demo

Spring Cloud系列断更了有一段时间了&#xff0c;这段时间最近都在忙着项目上的事&#xff0c;天天修复bug以及调整需求&#xff0c;反正各种操劳&#xff0c;了解业务需求&#xff0c;然后开发相关功能&#xff0c;很久都没碰Spring Cloud系列的相关文章了&#xff0c;最近回头…

亲爱的程序猿们,元旦快乐!

新年祝福 在这个充满欢笑和祝福的日子里&#xff0c;我想对你们说&#xff1a; 新的一年&#xff0c;愿你们像代码一样充满逻辑&#xff0c;像算法一样追求高效&#xff0c;像编程语言一样多样化&#xff01; 2024年即将到来&#xff0c;预测几个行业趋势&#xff1a; 人工…

【回溯】0-1背包Python实现

文章目录 [toc]问题描述形式化描述 回溯法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;回溯法 问题描述 给定 n n n种物品和一背包&#xff0c;物品 i i i的重量是 w i w_{i} wi​&#xff0c;其价值为 v i v_{i} vi​&#xff0c;背包的容量为 c …

Qt基础之四十五:Qt国际化(I18N)

国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),这种奇葩的缩写方式,让我想起了NBA球星“字母哥”。 下面看下Qt实现的动态语言切换效果。 一.效果 二.源码 QHSettingDialog.h #ifndef QHSETTINGDIALOG_H #define QHSETTINGDIALOG_H#…

Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)

文章目录 Redis快速入门1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端…

【数据结构】详细剖析线性表

顺序表与链表的比较 导言一、线性表二、线性表的存储结构三、顺序表和链表的相同点四、顺序表与链表之间的差异五、存储结构的选择六、静态顺序表的基本操作七、无头结点单链表的基本操作结语 导言 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff0…

轻量应用服务器与云服务器CVM对比——腾讯云

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

液晶时钟设计

#include<reg51.h> //包含单片机寄存器的头文件 #include<stdlib.h> //包含随机函数rand()的定义文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit RSP2^0; //寄存器选择位&#xff0c;将RS位定义为P2.0引脚 sbit RWP2^1; //读写选…

UEFI模拟环境搭建——windows+EDKII

目录 0 说明 1 安装软件 1.1 VS2019的安装 1.2 Python的安装 1.3 IASL的安装 1.4 NASM的安装 1.5 git的下载 2 EDKII的下载 3 配置环境 0 说明 个人感觉UEFI的环境搭建非常复杂&#xff0c;在经过很长一段折磨后&#xff0c;终于还是搭建成功&#xff0c;写下来记录一…

ctfshow——文件上传

文章目录 文件上传思路web 151web 152web 153知识点解题 web 154web 155web 156web 157web 158web 159web160web 161 文件上传思路 web 151 打开页面显示&#xff1a;前台校验不可靠。说明这题是前端验证。 右键查看源代码&#xff0c;找到与上传点有关的前端代码&#xff1a…

软件测试/测试开发丨Linux进阶命令(curl、jq)

1、 curl 接口请求 curl是一个发起请求数据给服务器的工具curl支持的协议FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSPcurl是一个非交互的工具 2、 curl 发起 get 请求 -G&#xff1a;使用get请求-d&#xf…

电子邮件地址填写指南:格式与常见问题解答

一个专业的电子邮件地址是一个你只用于工作目的的通信帐户。当你给收件人发送电子邮件时&#xff0c;这是他们最先看到的细节之一。无论你的职位或行业如何&#xff0c;拥有一个专业的电子邮件地址都可以提高你和所在公司的可信度。 在本文中我们解释了专业的电子邮件地址是什么…

2023-12-22 LeetCode每日一题(得到山形数组的最少删除次数)

2023-12-22每日一题 一、题目编号 1671. 得到山形数组的最少删除次数二、题目链接 点击跳转到题目位置 三、题目描述 我们定义 arr 是 山形数组 当且仅当它满足&#xff1a; arr.length > 3存在某个下标 i &#xff08;从 0 开始&#xff09; 满足 0 < i < arr.…

Zookeeper-Zookeeper应用场景实战(二)

1. Zookeeper 分布式锁实战 1.1 什么是分布式锁 在单体的应用开发场景中涉及并发同步的时候&#xff0c;大家往往采用Synchronized&#xff08;同步&#xff09;或者其他同一个 JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开发场景中&#xff0c;就需要 一种…

2024年【安全员-A证】考试内容及安全员-A证最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-A证考试内容参考答案及安全员-A证考试试题解析是安全生产模拟考试一点通题库老师及安全员-A证操作证已考过的学员汇总&#xff0c;相对有效帮助安全员-A证最新解析学员顺利通过考试。 1、【多选题】下列关于门…