当前位置:首页 > 虚拟机 > 正文

art虚拟机


一、Android系统架构开篇

本文作为Android系统架构的介绍,旨在引导读者了解Android的基本技术点,探索整体系统和内部流程。Android虽然复杂,技术要求广泛,但架构的整体设计逻辑是清晰的。基于LinuxKernel的内核空间,上层用户空间由原生库、虚拟机环境、框架层组成。内核和用户空间通过系统调用进行通信。用户空间编程主要基于C++和Java,Java与Native的交互是通过JNI实现的。


首先,我们通过Google正式的分层架构图来实现基本框架。从下到上五个层次包括Linux内核、HAL、系统原生库、Android运行环境、Java框架层,每一层内部又包含很多子模块。但静态的分层图并不能完全展现出系统动态运行的复杂性,我们将以Android启动流程为主线,从流程的角度进行深入分析,分析各个功能的作用。模块。一一深刻理解各部分在整体中的作用。


接下来,我们将从流程的角度重新解读Android的架构,通过系统启动流程揭示其内部联系:从BootLoader开始,经过Kernel、Native、Framework再到App。每个阶段都有关键组件:


加载层:Linux内核是基础,提供ART虚拟机执行功能,保证安全性并支持设备驱动程序的开发。
HAL:为硬件组件提供标准化接口,例如WIFI/蓝牙模块。
运行时和系统库:应用程序运行在独立的进程中,ART负责执行、编译和垃圾收集。
Native层:包括init进程、HAL模块、启动动画等。
框架层:处理应用程序框架请求。
应用层:应用程序的实际运行环境。
Syscall和JNI:连接内核和用户空间的桥梁。

关于通信方式,Android采用了多种机制,如LinuxIPC、Binder用于进程间通信、Socket用于框架层和native层、Handler同时处理进程之间的通信。了解这些通信方法是深入了解系统架构的关键。


最后,文章讲解了后续的基础内容,包括系统启动、稳定性、流程、四大组件、图形系统、服务、内存、存储、工具和实战案例。学习Android需要动态地理解代码背后的交互机制,就像《侠客行》中的石破天通过动态的视角理解武术的真谛一样。博主Gityuan将持续分享更多内容。欢迎关注我的网站和微信公众号安卓达摩院。


二、Android现在支持纯C/C++语言开发应用吗?还需要ART/Java虚拟机吗?

目前,从2.3系统开始,最终安装的文件始终是apk格式。大多数界面和系统功能都是用Java开发的。但是,对于稍微高级的应用程序,考虑到性能和安全性,就需要使用C./C++,这样用C/C++编译出来的最终文件就相当于Windows下的动态库dll,需要宿主机来加载。并通过Java的JNI调用这些本地方法。通过NDK版本,Google不断改进和开放C++。Android开发的目标是确保与iPhone一样用本地语言开发的软件的体验不能相差太大。

Android底层是用C/C++开发的。如果需要编写一个非常强大的Android应用程序,毫无疑问会使用C或者C++,但是Android应用程序框架使用的是Java。它的编写和开发者通常只使用应用程序框架层面,所以我们可以说Android开发基本上都是使用Java语言进行开发。如果你对Java比较了解,你一定会知道JNI是Java调用C/C++代码的一种机制,这样你就可以在Android终端上运行C++代码了~我告诉你,我开始学习Java和Android开发仅在我的第一年。我在大二和大一之间的假期里学习了Java。放学后我开始学习Android开发。如果你想学,什么时候都不晚!哇,码了很多字,希望大家采纳