共 1 篇文章

标签:Android CTS与Linux的关系 (android cts linux)

Android CTS与Linux的关系 (android cts linux)

在当今移动互联网时代,Android操作系统的普及程度已经无法被低估。作为一个开源的操作系统,Android吸引了许多开发者和厂商对其进行二次开发,并在各种设备上应用。而作为Android操作系统的基石,Linux内核在其中扮演了重要角色。在Android的开发中,CTS(Compatibility Test Suite)测试也起着关键的作用。那么,究竟是怎样的呢? 一、Linux在Android中的应用 Android操作系统以Linux内核为基础,其应用的环境和资源管理、网络、驱动程序和文件系统等方面都依赖于Linux内核。在Android开发中,开发者可以基于Android的C++底层框架,使用Java语言开发应用程序;而底层用的是C/C++语言,是通过JNI框架调用Java层的代码。 另外,在Android开发中,开发者可以通过NDK(Native Development Kit)调用C/C++库,这也是Linux编程所熟悉的方式。NDK开辟了Linux内核开发者进入Android开发的大门,同时也对于Android开发者而言,它是学习Linux的好媒介。 因此,在Android操作系统中,Linux内核的地位就如同“一盏明灯”,默默地工作着,为开发者创造了优秀的开发环境,支持其开发出更高水平的应用程序。 二、CTS测试在Android开发中的作用 CTS(Compatibility Test Suite)是Android的兼容性测试套件,它是Google针对所有的Android平台设备的软件测试工具。CTS不仅测试基本设备功能的兼容性,还涉及到了SDK、API、硬件加速、多媒体、安全等各个方面的测试。因此,CTS的结果往往是设备能否获得Google Play认证的重要依据。 而CTS测试不仅对厂商而言很重要,对于开发者来说也十分重要。由于Android平台上终端设备的各个方面的硬件和软件的差异,一些在开发的时候不注意或者硬件不同的小问题就会导致应用在某些设备上无法正常运行。这时候,CTS测试就是一个很好的工具,可以帮助开发者及时发现和解决问题。 三、CTS测试和Linux的关系 CTS测试在某种程度上是基于Linux的一系列测试,它也能测试出Linux系统相关的问题,例如:文件系统权限、用户操作权限、编译器等。而在Android CTS测试中还使用了Linux的一些工具,例如syench、iperf、ddms等。 此外,CTS测试的过程中也涉及到了许多Linux开发者比较熟悉的工具,例如adb( Android Debug Bridge )、fastboot、ddms等Linux命令,还包括比较基础的shell命令。 因此,可以说在CTS测试的过程中,Linux扮演了不可或缺的角色,并与Android操作系统紧密地结合在一起。CTS测试所测试的功能和硬件都有一个与Linux密切相关的场景和测试方法,因此需要在CTS测试中了解Linux模块的工作和测试方法。 Android CTS和Linux在Android开发中都起着重要的作用,前者测试了Android开发的兼容性并提高了应用的稳定性,后者为Android开发提供了优秀的开发环境,并保证了软件在跨操作系统环境下的正常运行。他们两者相互配合,为Android系统的繁荣发展打下了良好的基础。 相关问题拓展阅读: 安卓与Linux有什么关系 安卓与Linux有什么关系 安卓与Linux有什么关系 按照是Linux核心但是借用了java虚拟机器技术,并组织编制的一个类Java作业系统。。。区别Linux的就是库和使用者介面都是用的java技术。。。而Linux的桌面和api则是他们自身程式设计形成的。。。 Android是一种基于Linux的自由及开放原始码的作业系统,主要使用于移动装置,如智慧手机和平板电脑,由Google公司和开放手机联盟领导及开发。 Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支援的功能,Android 大都没有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程式移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、资料结构与巨集。 Android 的 Linux kernel控制包括安全(Security),储存器管理(Memory Management),程式管理(Process Management),网路堆叠(Neork Stack),驱动程式模型(Driver Model)等。下载Android原始码之前,先要安装其构建工具 Repo来初始化原始码。Repo 是 Android 用来辅助Git工作的一个工具。 Linux和安卓有什么关系? Linux与Androld的关系 虽然Android基于Linux核心,但是它与Linux之间还是有很大的差别,比如Android在Linux核心的基础上添加了自己所特有的驱动程式。下面我们就来分析一下它们之间究竟有什么千丝万缕关系? 1 安卓为什么会选择Linux 成熟的作业系统有很多,比如Unix系统。但是Android为什么选择采用Linux核心呢?这就与Linux的一些特性有关了,比如: (1)强大的记忆体管理和程序管理方案 (2)基于许可权的安全模式 (3)支援共享库 (4)经过认证的驱动模型 (5)Linux本身就是开源专案 更多关于上述特性的资讯可以参考Linux 2.6版核心的官方文件,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux真正的关系。 2Android不是Linu× 看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux核心的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进 行分析,看完后你就会觉得Android不是Linux了。 ①它没有本地视窗系统 (1)它没有glibc的支援 (2)它并不包括一整套标准的Linux使用程式 (3)它增强了Linux以支援其特有的驱动 1、它没有本地视窗系统 什么是本地视窗系统呢?本地视窗系统是指GNU/Linux上的X视窗系统,或者Mac OS的Quartz等。不同的作业系统的视窗系统可能不一样,Android并没有使用(也不需要使用)Linux的X视窗系统,这是Android不是Linux的一个基本原因。 2、它没有glibc支援 由于Android最初用于一些便携的移动装置上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。 3、它并不包括一整套标准的Linux使用程式 Android并没有完全照搬Linux系统的核心,除了修正部分Linux的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH档案系统等。 4、Android专有的驱动程式 除了上面这些不同点之外,Android还对Linux装置驱动进行了增强,主要如下所示。 (1) Android Binder基于OpenBinder框架的一个驱动,用于提供Android平台的程序间通讯( InterProcess Communication,IPC)功能。原始码位于 drivers/staging/android/binder.c。 (2) Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式装置做了很多优化。源伐码位于: Ⅰ kerneUpower/earlysuspend.c Ⅱ kernel/power/consoleearlysuspend.c Ⅲ kernel/power/fbearlysuspend.c Ⅳ kemel/power/wakelock.c Ⅴ kernel/power/userwakelock.c (3)低记忆体管理器(Low...

技术分享