2023 Android开发者路线-第一部分

news2024/11/30 0:35:52

2023 Android开发者路线-第一部分

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 应用程序。

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

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

相关文章

pyhton GUI编程之Tkinter美化皮肤ttkbootstrap

文章目录 pyhton GUI编程之Tkinter美化皮肤ttkbootstrap介绍 pyhton GUI编程之Tkinter美化皮肤ttkbootstrap介绍 tkinter 相对简单&#xff0c;学习入门很快&#xff0c;但是做出来的GUI界面不够美观&#xff0c;各个组件的外观都很老土&#xff0c;所谓 " 爱美之心&#…

发现一个国产BI软件,做财务数据分析效果绝了

如果是一般的财务数据分析&#xff0c;BI软件们都能做&#xff0c;但如果真要深入了解财务痛点&#xff0c;逐个击破财务数据分析难点&#xff0c;实现多维立体自助式的财务数据分析&#xff0c;那就难。就目前而言&#xff0c;财务数据分析做得好的国产BI软件也就一个奥威BI软…

使用docker构建ElasticSearch集群

目录 一、准备工作 二、编写docker-compose.yml 三、编写ElasticSearch和kibana的配置文件 四、执行构建ElasticSearch集群 五、验证结果&#xff1a; 六、可视化工具 ElasticSearch可视化工具介绍&#xff08;elasticsearch-head、kibana、elasticHD&#xff09; 一、e…

CTF权威指南 笔记 -第四章Linux安全机制-4.1-Stack Canaries

目录 Stack Canaries 简介 我们进行简单的例子 64 32 checksec Stack Canaries 是对抗栈溢出攻击的技术 SSP安全机制 Canary 的值 栈上的一个随机数 在程序启动时 随机生成并且保存在比返回地址更低值 栈溢出是从低地址向高地址进行溢出 如果攻击者要攻击 就一定要覆…

电动力学专题:圆柱形导体中趋肤效应

电动力学分析 金属导体内的电流密度方程 由Maxwell方程组导出Helmhltz方程 对于良导体,有\sigma/(\omega \eprsilon),因此有 圆柱形导线中电流密度分布 设电流沿Z轴方向流动,均匀导体,可简化为 通解&#xff1a; 安培环路定理 定态电磁波的Maxwell方程组 贝塞尔函数性质&…

【SQL】作为前端,应该了解的SQL知识(第三弹)

&#x1f4d1;视图 使用表时&#xff0c;会将数据保存在存储设备&#xff08;硬盘上&#xff09; 而使用视图时&#xff0c;并不会将数据保存在存储设备上&#xff0c;也不会将数据保存在任何地方。 视图里面保存的是 从表中取出数据所使用的SELECT语句&#xff08;视图中的…

zhangrelay博客置顶三篇点击量分析

230515只有三篇置顶&#xff0c;如下&#xff1a; 分别为&#xff1a; 20.03.13 &#xff1a; 901522.01.12 &#xff1a;1372923.04.15 &#xff1a;18836 熟悉zhangrelay博客风格的AI都清楚&#xff0c;他的博客内容都是筛选和设计过的。 置顶三篇阅读量差值为&#xff1…

C++--AVL树的插入,详解四种旋转规则(结尾附源代码链接)

AVL树的插入 前言左单旋右单旋左右双旋右左双旋检查是否这颗树是否是AVL树 前言 AVL树可以说是对二叉搜索树的优化&#xff0c;我们来看二叉树搜索树的下一面一种特殊情况&#xff1a; 当我们插入的数是上面的情况时&#xff0c;二叉树搜索树的特点就形同虚设了&#xff0c;这…

ChatGpt 2步制作流程图与思维导图,你确定不来看一下吗?

什么&#xff1f;你还不会使用ChatGpt。推荐下面这篇文章 ChatGPT保姆级教程&#xff0c;一分钟学会使用ChatGPT&#xff01; - 掘金 (juejin.cn) 如果没有谷歌账号推荐直接买一个&#xff0c;因为你在中国注册谷歌账号&#xff0c;被谷歌查到&#xff0c;也是使用不了ChatGp…

企业数字化转型过程中面临最大的挑战和问题是什么?

无论组织规模如何&#xff0c;业务的敏捷性、弹性以及生产力的高低都是决定其发展运营成功与否的关键因素。而一个良好的数字化转型战略则是企业发展进步的有力助推器。 麦肯锡称&#xff0c;借助数字化转型&#xff0c;可以实现 20% 至 50% 的经济收益和 20% 至 30% 的客户满…

【Spring Cloud Alibaba】Nacos的安装与介绍以及Nacos集群的安装

欢迎来到 Nacos 的世界&#xff01; Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性…

shell构建基本脚本

构建基本脚本 使用多个命令 一次使用多个命令&#xff0c;把它们放在一行&#xff0c;使用’;隔开 [rootmyserver ~]# date ; who; ls Sun May 14 23:39:34 CST 2023 root pts/0 2023-05-14 23:31 (192.168.10.1) anaconda-ks.cfg initial-setup-ks.cfg创建shel…

JavaScript学习-DOM事件进阶

事件流 事件流和两个阶段说明 事件流指的是事件完整执行过程中的流动路径 说明:假设页面里有个div&#xff0c;当触发事件时&#xff0c;会经历两个阶段&#xff0c;分别是捕获阶段、冒泡阶段 简单来说:捕获阶段是 从父到子 冒泡阶段是从子到父 或者说从大的往下的是捕获&am…

阿里云服务器如何安装宝塔面板?

使用阿里云服务器安装宝塔面板教程&#xff0c;阿里云服务器网以CentOS操作系统为例&#xff0c;安装宝塔Linux面板&#xff0c;先远程连接到云服务器&#xff0c;然后执行宝塔面板安装命令&#xff0c;系统会自动安装宝塔面板&#xff0c;安装完成后会返回面板地址、账号和密码…

前端有必要掌握TypeScript吗,答案十分肯定

本文首发自「慕课网」&#xff08;www.imooc.com&#xff09;&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"或慕课网公众号&#xff01; 作者&#xff1a;一飞同学 | 慕课网讲师 近几年&#xff0c;前端技术发展越来越迅…

亚马逊云科技助力医疗与生命科学行业,提供高性能计算(HPC)

2023年4月27日&#xff0c;亚马逊云科技医疗与生命科学行业峰会召开。会议上&#xff0c;亚马逊云科技大中华区战略业务发展部总经理顾凡表示&#xff1a;“亚马逊云科技不仅提供覆盖全球的云基础设施以及超过200大类的云服务&#xff0c;更重要的是&#xff0c;我们深刻了解行…

Agisoft Metashape 卫星图像处理

Agisoft Metashape 利用卫星图像创建三维模型 文章目录 Agisoft Metashape 利用卫星图像创建三维模型前言一、添加图像二、对齐图像三、构建 DEM四、生成平铺模型前言 Agisoft Metashape Professional 支持处理带RPC参数的立体卫星图像。支持的卫星数据有:Beijing-3A, Ikonos…

Flash钓鱼->CS上线(免杀过火绒、360等)

先看结果 访问钓鱼页面: 点击立即升级即把马儿下载下来了 这个马儿是rar压缩的&#xff0c;做成的rar解压自启动&#xff0c;所以是个exe的文件&#xff0c;然后这里为了像一点&#xff0c;把图标给改了 双击运行&#xff0c;查看效果&#xff1a; 首先CS是没东西的 解压路…

UNITY3D 5V5网游开发案例教程

文章连载更新中&#xff0c;可以提前领取素材进行预习&#xff0c;自学 素材领取&#xff1a;私信发送 领取RPG网络开发教材 这里写目录标题 游戏玩法这门课适合哪些人学习学完了能达到什么效果项目准备基础系统战斗系统同步设计精讲社交系统副本系统优化项目准备正文美术准备&…

服务(第二十三篇)mysql-mha

1、什么是 MHA MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大…