android 技术1-概要

概念介绍

  1. 安卓(Android),是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由安迪·鲁宾开发,主要支持手机;
  2. AOSP,全称"Android Open Source Project",中文意为"Android 开放源代码项目"。发起者是谷歌,主要用途是移动设备的系统(主要协议是Apache 2.0),基于Linux内核核心代码,截至目前大量安卓阵型的手机厂商以及上下游供应商参与了安卓项目的开发.
  3. 开源协议是Apache Licene 2.0 协议,开源协议非常多种,每种的规定都不一样,这个2.0的规范很宽松,允许商用,允许修改源码后闭源,所以你改了这个,也没人能管你,国内的手机厂商全是基于AOSP定制的。
  4. GMS,AOSP也不包含Google的应用程序套件,也就是GMS,是Google Mobile Service。这个软件套件包含了Chrome,YouTube,Google Play, Google Play 服务,Google支付,Voice command等。GMS不是开源的,凡是要安装GMS的手机必须获得Google的授权。

在这里插入图片描述

android 框架

android 分层图如下:
在这里插入图片描述
Linux Kernel: 完全开源,GPLv2协议
Libraryies: 含少量开源库,如OpenGL ES,Webkit等
Android Runtime: android 优化的JAVA虚拟机,更适合嵌入式系统。
Application Framework和Application是android sdk 和系统框架层中间件及最上层应用层。

android 如何避开GPLV2传染性的

简单的讲GPLv2协议,只要你对源代码有更改就必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。

(1) 首先,最关键点Linus Torvalds在Linux内核的版权文件COPYING中最前面增加了下面一段话,保证了Linux内核的商业用途不被GPLv2传染。

 NOTE! This copyright does *not* cover user programs that use kernel
services by normal system calls - this is merely considered normal use
of the kernel, and does *not* fall under the heading of "derived work".
Also note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.

Also note that the only valid version of the GPL as far as the kernel
is concerned is _this_ particular version of the license (ie v2, not
v2.2 or v3.x or whatever), unless explicitly otherwise stated.


Linus Torvalds

----------------------------------------

 GNU GENERAL PUBLIC LICENSE
    Version 2, June 1991

翻译过来就是说这个版权不覆盖通过正常系统调用来使用Linux内核服务的用户程序。有了这一点Linux内核 的GPLv2不会传染内核之上。系统调用是操作系统内核提供一系列具备预定功能的函数接口供应用程序调用。系统调用把应用程序的请求传给内核,内核调用相应的函数完成所需的处理,再将处理结果返回给应用程序。

(2) 其次linux系统下c库一般是glibc库。glibc是GNU的,属于GPL授权,也有传染性。libc是google 改写优化的Free BSD Bionic库,属于BSD协议。可以选择性开源,也不具传染性。
(3) 通过以上两点,android很好的规避了GNU/Linux GPL协议的传染性。

linux内核和android 关系

1、 Android 为什么会选择linux
(1) 强大的内存管理和进程管理方案
(2) 基于权限的安全模式
(3) 支持共享库
(4) 经过认证的驱动模型
(5) Linux本身就是开源项目

2、Android 版本和Linux内核版本如下:

Android Version    |API Level  |Linux Kernel in AOSP
----------------------------------------------------
1.5   Cupcake      |3          |2.6.27
1.6   Donut        |4          |2.6.29
2.0/1 Eclair       |5-7        |2.6.29
2.2.x Froyo        |8          |2.6.32
2.3.x Gingerbread  |9, 10      |2.6.35
3.x.x Honeycomb    |11-13      |2.6.36
4.0.x Ice Cream San|14, 15     |3.0.1
4.1.x Jelly Bean   |16         |3.0.31
4.2.x Jelly Bean   |17         |3.4.0
4.3   Jelly Bean   |18         |3.4.39
4.4   Kit Kat      |19, 20     |3.10
5.x   Lollipop     |21, 22     |3.16.1
6.0   Marshmallow  |23         |3.18.10
7.0   Nougat       |24         |4.4.1
7.1   Nougat       |25         |4.4.1 (To be updated)

android 系统驱动

Android在Linux内核中增加的主要是一些驱动程序,这些驱动程主要分为两种:Android专有驱动和Android使用的设备驱动

1、Android 几个重要的专有驱动
(1) Binder驱动(Binder Driver):
Android Binder 是基于 OpenBinder 框架的一个驱 动,用于提供 Android 平台的进程间通信(IPC)。而原来的 Linux 系统上层应用的进程间通信主要是 D-Bus,采用消息总线方式来进行 IPC。
源代码位于 drivers/staging/android/binder.c
(2) 低内存管理器 Low Memory Killer
Android 中的低内存管理器和 Linux 标准的 OOM(Out Of Memory) 相比,其机制更加灵活。它可以根据需要杀死进程来释放需要的内存。
(3) 匿名共享内存(Ashmem)
匿名共享内存为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。如果一个程序尝试访问 Kernel 释放的一个共享内存块,它会收到一个错误提示,然后重新分配内存并重载数据。
(4) Logger: 轻量级的log驱动。
(5) Android PMEM
PMEM 主要作用就是向用户空间提供连续的物理内存区域。 让 GPU 或 VPU 缓冲区共享 CPU 核心,DSP 和某些设备只能工作在连续的物理内存上,源代码位于 drivers/misc/pmem.c.
2、Android常用的设备驱动
Android中常使用的设备主要有Framebuffer驱动、输入设备驱动、v412摄像头—视频驱动、OSS音频驱动、ALSA音频驱动、MTD驱动、蓝牙驱动、Wlan驱动等。

引文

[1] https://nga.178.com/read.php?tid=27070511&rand=940
[2] https://www.cnblogs.com/developer-huawei/p/13540071.html
[3] https://blog.csdn.net/xiphi_6/article/details/117574853
[4] https://blog.csdn.net/canpool/article/details/119305926
[5] https://blog.csdn.net/weixin_33845477/article/details/92043349
[6] https://blog.csdn.net/kobebryant0/article/details/21159137?spm=1001.2014.3001.5502 [7]https://www.itdaan.com/blog/2012/06/15/7f3f2c7c16a06109e48f8b917811196a.html
[8] https://blog.csdn.net/juana1/article/details/6648518
[9] https://blog.csdn.net/baidu_38661691/article/details/97399533
[10] https://blog.csdn.net/qq_40395874/article/details/118911182

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值