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

news2025/1/24 8:20:24

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.coloradmin.cn/o/1347139.html

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

相关文章

接口自动化测试实战经验分享(附教程)

作为测试&#xff0c;你可能会对以下场景感到似曾相识&#xff1a;开发改好的 BUG 反复横跳&#xff1b;版本兼容逻辑多&#xff0c;修复一个 BUG 触发了更多 BUG&#xff1b;上线时系统监控毫无异常&#xff0c;过段时间用户投诉某个页面无数据&#xff1b;改动祖传代码时如履…

HTML教程(1)——概述和第一个网页

一、什么是HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页 二、什么是HTML 标签 H…

你真的懂Hello World!吗?(编译与链接,静态链接与动态链接)

&#x1f4ab;Hello World! 对于大家来说Hello World!应该是最熟悉不过的一句话&#xff0c;我们从Hello World!走进了计算机的世界&#xff0c;但是你真的了解Hello World!吗&#xff1f;你又思考过它背后蕴含的机理吗&#xff1f;他是怎么从代码变成程序的你真的思考过吗&…

LINUX 抓包工具Tcpdump离线安装教程

本次教程基于内网环境无法访问网络使用安装包进行安装抓包工具 1、首先给大家看下一共有6个安装包&#xff0c;依次进行解压&#xff0c;包我就放到csdn上了&#xff0c;需要的可以联系我进行下载 2打包然后传到服务器任意一个目录下&#xff0c;进入到当前目录&#xff0c;然后…

第11章 访问维护

上一章讨论了在目标主机上提升权限的方法。本章将介绍在滲透测试过程的最后一个环节&#xff0c;即帮助我们随时进入目标主机的方法。 在完成了提升权限的阶段性工作之后&#xff0c;我们应当建立一种机制&#xff0c;以维持对目标主机的控制权。这样一来&#xff0c;即使我们…

GPT3.5 改用 GPT4 价格翻了30倍 如何破局? GPT 对话成本推演

场景介绍 假设你搭建了一个平台&#xff0c;提供 ChatGPT 3.5 的聊天服务。目前已经有一批用户的使用数据&#xff0c;想要测算一下如果更换 GPT 4.0 服务需要多少成本&#xff1f; 方案阐述 如果是全切&#xff0c;最简单粗暴的方案就是根据提供 ChatGPT 3.5 消费的金额乘…

Rust学习笔记004:Rust的所有权机制

内存相关的基础知识 不同语言的内存管理系统 栈和堆 堆和栈的使用 引出所有权方案 String类型 Rust 的所有权机制 Rust 的所有权机制是一种内存管理系统&#xff0c;它允许在编译时通过所有权、借用和生命周期来确保内存安全&#xff0c;同时避免了垃圾回收的运行时开销。这些…

2023-12-21 LeetCode每日一题(美丽塔 II)

2023-12-21每日一题 一、题目编号 2866. 美丽塔 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&a…

软件工程PPT 笔记摘录(2)

分析软件需求 UML 提供了用例图来分析和描述用例视角的软件需求模型 UML 提供了交互图和状态图来描述行为视角的软件需求模型 UML 提供了类图来描述和分析业务领域的概念模型 顺序图&#xff1a;强调消息传递的时间序 通信图&#xff1a;突出对象间的合作 类图&#xff0…

【SAP-FICO】--总账标识配置路径OBXR

FICO业务需求&#xff1a; F-02&#xff0c;财务会计凭证填写09客户A时&#xff0c;带出的总账标识为可编辑。 需求截图&#xff1a; 第一步&#xff1a;了解需求 首先&#xff0c;我们要明白&#xff0c;财务凭证生成&#xff0c;是分多种类型&#xff08;不同类型的凭证&a…

【深度学习:Few-shot learning】理解深入小样本学习中的孪生网络

【深度学习&#xff1a;Few-shot learning】理解深入小样本学习中的孪生网络 深入理解孪生网络&#xff1a;架构、应用与未来展望小样本学习的诞生元学习小样本学习孪生网络的基本概念孪生网络的细节Triplet Loss架构特点关键组件训练过程主要应用领域未来展望示例图片结论 备注…

[JS设计模式]Prototype Pattern

Prototype pattern Prototype pattern可便于同类型的多个对象共享属性。原型&#xff08;prototype&#xff09;是JS原生的对象&#xff0c;其他对象可以通过原型链&#xff08;prototype chain&#xff09;来访问原型。单独看这句描述可能还是有点儿抽象&#xff0c;下面通过…

【HarmonyOS】ArkTS语言介绍与组件方式运用

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

OSG绘制视锥体

最近要来实现一个相机位姿态可视化的需求&#xff0c;不想使用pangolin&#xff0c;不好集成&#xff0c;想用osg来做可视化。以下是demo效果。 代码实现&#xff1a; // Cone_of_vision.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <os…

Angular进阶之六:Progressive rendering

简介 Progressive Rendering 是一种提高 Web 应用性能的方法&#xff0c;允许页面在加载过程中逐步呈现&#xff0c;以提高用户体验。在本文中&#xff0c;我们将探讨如何在 Angular 中通过自定义指令实现 Progressive Rendering&#xff0c;特别是处理从服务器获取大量数据的…

PAT 乙级 1046 划拳

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为&#xff1a;每人口中喊出一个数字&#xff0c;同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和&#xff0c;谁就赢了&#xff0c;输家罚一杯酒。两人同赢或两人同输则继续下一轮&…

数据预处理时,怎样处理类别型特征?

1. 序号编码 序号编码通常用于处理类别间具有大小关系的数据。例如成绩&#xff0c;可以分为低、中、高三档&#xff0c;并且存在“高>中>低”的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID&#xff0c;例如高表示为3、中表示为2、低表示为1&#xff0…

【网络安全 | MD5截断比较】PHP、Python脚本利用

前言 在解题中&#xff0c;当遇到类似 substr(md5(a),-6,6) 7788这样的MD5截断比较的题目时&#xff0c;只有求出a的值才能进行接下来的操作。 一个一个去猜是不可能的&#xff0c;通常使用脚本解决&#xff0c;文末给出实战案例。 PHP循环脚本 <?phpfor($i1;$i<9…

机器学习(一) -- 概述

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理 未完待续…… 目录 系列文章目录 前言 一、机器学习定义&#xff08;是什么&#xff09; 二、机器学习的应用&#xff08;能做什么&#xff09; 三、***机器…

蒙牛的京东店铺的数字化经营

1、蒙牛的京东店铺的数字化经营框架是怎样的&#xff1f; 2. 蒙牛的京东店铺是如何进行环境分析的&#xff1f; 结合波特五力模型进行分析&#xff1a;客户、供应商、企业自身、潜在竞争对手、同行业竞争对手 3.蒙牛的京东店铺采取了哪些方式进行线上引流&#xff1f; 找智商长…