2023年Android开发者路线-第1部分

Android roadmap
2023年Android开发者路线-第1部分

2023年Android开发者路线-第2部分

2023年Android开发者路线-第3部分

2023年Android开发者路线-第4部分

2023年Android开发者路线-第1部分

Android 生态系统处于不断发展的状态:每天都会引入新的库和资料,旨在加快开发速度并让我们作为开发人员的生活更轻松。

在这个由多个部分组成的系列中,您将按照我们的2023 年 Android 开发者路线图了解有关 Android 开发生态系统的所有信息,让您更全面地了解 Android 社​​区以及作为开发者如何取得进步。

2023 Android 开发者路线图旨在让您全面了解当前的 Android 生态系统,并提供建议的学习路径以帮助您掌握概念。综合的了解当前的 Android 生态系统,并提供建议的学习路径以帮助您掌握概念。

在这个由 5 部分组成的系列的第一部分中,我们将从介绍 Android 路线图的前四个部分开始:

  1. Languages
  2. Android OS
  3. The Android Platform
  4. App Manifest

Android编程语言

Android Language
所有 Android 应用程序都必须使用 Kotlin、Java 和/或 C/C++ 编写。Kotlin 和 Java 是开发人员用来构建 Android 应用程序的主要语言,而 C++ 用于编写面向性能或基于硬件的功能,这些功能使用 Java 本机接口 (JNI )调用本机函数。
在本节中,我们将讨论 Kotlin 和 Java。

Java

java Logo
十多年前,当谷歌发布他们的第一个 Android 操作系统版本时,他们采用 Java 作为 Android 应用程序开发的主要语言。

但为什么是 Java?作为最古老的面向对象语言之一,Java 易于学习,并且在受Java 虚拟机(JVM) 启发的Dalvik虚拟机(DVM) 上运行良好,使其可移植到几乎任何设备和操作系统。所以,当谷歌开始构建Android系统时,Java是最合适的语言之一。

Kotlin

kotlin logo
Kotlin诞生于 JetBrains。它最初是为JVM环境设计的,结合了函数式编程和面向对象编程。自发布以来,Kotlin 已成为 Android 开发等领域的后起之秀。

以下是 Kotlin 与 Android 完美搭配的几个原因:

  • 互操作性:Kotlin 与 Java 100% 互操作,并支持与 JVM 环境的良好互操作性。
  • 安全性:根据Android 文档,包含 Kotlin 代码的 Android 应用程序崩溃的可能性降低 20% 。
  • 异步:Kotlin 对协程的使用使其能够提供异步(非阻塞)编程支持。

除了上述几点外,谷歌还在 2019 年谷歌 I/O 大会上宣布了他们以 Kotlin 为先的 Android 开发方法。自宣布以来,使用 Kotlin 构建的应用程序数量呈指数级增长。

所以如果你现在开始学习Android开发,Kotlin会是一个不错的选择。

https://kotlinlang.org/

Android 操作系统

Android操作系统
Android 平台的基础是Linux 内核,它允许 Android 利用某些安全功能。自 1991 年创建以来,Linux 内核已在数百万个安全敏感系统中使用,因此长期以来一直被成千上万的开发人员研究、测试和改进。

根据Android 文档,Android 使用了几个关键的 Linux 安全功能,包括:

  • 基于用户的权限模型
  • 进程隔离
  • 一种用于安全进程间通信 (IPC) 的可扩展机制
  • 删除内核中不必要和/或不安全部分的能力

https://source.android.cn/security/overview/kernel-security.html

Linux 的另一个关键特性是它的多用户操作系统,它允许多个用户访问独立的系统资源,例如内存、CPU 资源、RAM 和应用程序。通过将用户资源彼此隔离,它们可以相互保护。

Android 平台利用 Linux 多用户系统及其自身的应用程序沙箱,将应用程序资源相互隔离,保护应用程序和系统免受恶意应用程序的侵害。有关更多详细信息,请查看应用程序沙箱。

应用沙箱:https://source.android.cn/security/app-sandbox

Android平台架构

Android Arch
Android 平台架构由构建在 Linux 内核之上的六层组成。(注:实际架构按上图倒序堆叠。)
让我们讨论每一层:

Linux内核

Linux Kernel是Android平台架构的核心。它通过其Low Memory Killer Daemon管理低级内存和所有可用的硬件驱动程序——例如 WiFi 驱动程序、相机驱动程序、音频驱动程序、蓝牙驱动程序、显示驱动程序和所有外围设备驱动程序。

Linux Kernel: https://source.android.com/devices/tech/perf/lmkd

硬件抽象层 (HAL)

硬件抽象层(HAL) 通过定义标准接口将硬件功能桥接到更高级别的 Java API 框架,允许您在不修改更高级别系统的情况下实现低级别功能。

HAL 实现被打包成模块,这些模块存储为共享库(.so文件),并在适当的时候由 Android 系统加载。

Android Hal: https://source.android.com/devices/architecture/hal

安卓Runtime

Android Runtime (ART) 是Android 操作系统使用的应用程序运行时系统,是 Android 生态系统中的核心功能之一。ART 的发明是为了取代运行 Android 5.0 (Lollipop) 或更高版本设备的Dalvik 虚拟机。

ART 的主要作用是通过将 DEX 字节码翻译成您的系统可以理解的机器码来执行Dalvik 可执行格式(DEX)。

ART 架构被编写为在低内存设备上运行多个虚拟机。一些关键特性直接关系到运行 Android 应用程序的速度。ART 的主要特点包括:

  • 提前 (AOT) 和即时 (JIT) 编译
  • 增强型垃圾收集 (GC)
  • 将应用程序包的 DEX 文件转换为压缩机器代码(在 Android 9(API 级别 28+)上)
  • 更好的调试支持,包括详细的诊断和崩溃报告、设置多个观察点的能力等等
    有关更多详细信息,请查看Android 运行时 (ART) 和 Dalvik。

Android dalvik:https://source.android.com/devices/tech/dalvik/dex-format
Android runtime: https://source.android.com/devices/tech/dalvik/index.html

本机 C/C++ 库

Android 平台包括一对Native API ,它们在Native Development Kit (NDK)之上工作。

本机 API 让您可以管理本机活动并访问物理设备组件,例如相机、传感器、图形和音频。它们还暴露给更高层,因此您可以在 Java API 框架上控制物理设备的组件。

Android NDK:https://developer.android.com/ndk/guides

Java API Framework(应用程序框架)

Java API 框架是用 Java 和 Kotlin 编写的 Android 库的集合,提供了 Android 操作系统的整个功能集。Android API 包括可扩展的视图系统、可重用的组件和系统管理器,它们用于通过简化接口的重用来构建您的 Android 应用程序。

Java API 框架中比较强大的 API 之一是Android Jetpack,由 Google 推出。Jetpack 通过减少样板代码来加快开发速度,使开发人员可以专注于他们关心的代码。

Android Jetpack:https://developer.android.com/jetpack

此外,它还提供生命周期、UI 工具包、导航、安全、缓存、调度程序、依赖注入等解决方案。您将在以后的帖子中对此进行深入介绍。

系统应用

系统应用程序是预装的应用程序,例如电子邮件、SNS 消息、日历、互联网浏览、联系人等,它们位于 ROM 的系统分区中。系统应用程序的配置可能因手机制造商而异。有关更多详细信息,您可以查看系统应用程序。

Android系统应用:https://developer.android.com/guide/platform#system-apps

在本节中,您介绍了 Android 平台的整体架构。有关详细信息,请查看Android 平台架构。

Android平台架构:https://developer.android.com/guide/platform

Android Manifest

Android Manifest
每个 Android 项目都必须有一个 AndroidManifest.xml 文件,该文件描述有关应用程序的基本信息,例如包名称、入口点、组件、权限和元数据。

程序包名称和应用程序 ID

每个 Android 项目都必须有一个 package 属性,它代表您的应用程序在 AndroidManifest.xml 文件中的通用唯一应用程序 ID。清单文件必须位于您的 /src/main 文件夹中。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="io.getstream.chat.android.ui">

package 属性是在 Android 系统(物理设备)和 Google Play 上唯一确认应用的方法。Android 构建工具使用 package 属性来实现以下功能:

  1. 将应用程序包名称应用为应用程序资源的命名空间。
  2. 解析在清单文件中声明的隐式类名。例如,在上述清单中,声明为 <activity android:name=".MainActivity"> 的活动将被解析为 io.getstream.chat.android.ui.MainActivity。因此,这些类也必须在同一包文件夹中。
    如需更多信息,可以查看应用清单概述。

应用清单:https://developer.android.com/guide/topics/manifest/manifest-intro

结论

本节介绍了有关 Android 体系结构的重要细节,因此现在您可以更好地了解 Android 应用程序的工作原理。
同样,不要被本路线图上的信息量吓倒。查看对您了解 Android 开发最有帮助的部分。
此外,您不必了解有关 Android 操作系统的所有知识。但是,了解 Android 平台的整体架构肯定会帮助您构建更好的 Android 应用程序。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Calvin880828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值