当前位置:首页 » 安卓系统 » 认识android

认识android

发布时间: 2023-07-03 07:45:25

‘壹’ 安卓系统是什么

安卓系统是什么

安卓系统英文简称为Android,是目前全球手机用户使用最多的操作系统,由美国知名的谷歌公司开发,其系统都要应用在智能手机、平板电脑等领域。

Android是一种以linux为基础的开放源代码操作系统,主要使用于便携设备。尚未有统一中文名称,在国内我们通常称之为安卓系统。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。

Android当前的主要竞争对手是苹果公司的iOS系统,当前智能手机市场中,安卓系统凭借开源,被诸多手机厂商所采用,像三星、HTC、小米、华为、中兴、酷派等等绝大多数部分品牌手机均搭载了谷歌安卓系统,也正因为如此,安卓系统,在全球智能机市场中占据第一。

占据智能机系统市场第二的'为苹果iOS系统,苹果iOS系统主要同于苹果iPhone手机、iPad平板电脑当中。iOS系统是目前全球最好的移动操作系统,去稳定性与安卓性要明显优于安卓系统,不过由于苹果iOS系统只应用于自家的iPhone手机与iPad平板电脑当中,因此其市场份额无法比拟诸多手机厂商搭载的安卓系统。

iOS系统目前已经发展到了iOS7版本,其新版表现相比以往似乎有所下降,越来越多用户认为,iOS相比Android的优势在逐渐减小。

另外占据智能手机市场第三份额的为微软WP系统,不过WP系统,相比苹果iOS与安卓系统有明显差距,市场份额相对很小。目前搭载WP系统的手机主要是诺基亚Numia系列手机,如诺基亚Lumia 520、诺基亚920、诺基亚1020等等诺基亚手机均是搭载了该系统。

微软WP系统,目前最新版本为WP8,WP8系统界面比较美观,不过支持的硬件并不高,加之新版发布缓慢,合作的手机厂商,未来发展也比较堪忧。

以上就是什么是安卓系统的简单介绍,希望对大家认识安卓系统有所帮助,目前几乎全部的国产手机均搭载的是安卓系统,并且由于安卓采用开源,手机厂商可以自由二次开发,因此也衍生出了各类优秀UI系统,基本所有知名大牌手机厂商都会对安卓系统进行一些二次开发,主要是扩展功能,并且更改默认图标等,从而显得更加个性。


‘贰’ Android中的uid

uid 是user 用户id

Android 里的UID是基于应用程序,每一个程序都有一个UID,如果应用程序1和应用程序2的uid不同,则在default情况下,二者无法读取对方的数据,这样提升了应用的安全性。

当使用者安装了某一应用程序时,android系统就会赋予一个uid,用户可以在屏幕上的窗口里可以检视这个AndroidManifest.xml档案的内容,用户回了解这个应用程序的目的、权限等,并选择接受与不接受。

一些特殊情形下,两个应用程序是可以持有一样的UID。

例如,当需要推出新版本时,这两种版本的程序可以持有一样的UID, 才有权限将旧版程序的数据转移到新版软件里。

Pid 是 process 进程ID,Uid 是 user 用户ID,只是Android和计算机不一样。

计算机每个用户都具有一个Uid,而Android中每个程序都有一个Uid。

默认情况下,Android会给每个程序分配一个普通级别互不相同的 Uid,如果用互相调用,只能是Uid相同才行,这就使得共享数据具有了一定安全性。

每一个不同的 程序 都能有一个UId,但是一个应用里面可以有多个PId。

一个用户可以打开多个进程(Pid),并且这些进程的uid是一样的;

一个pid对应一个进程,每次打开时系统都会赋予不同的pid,但是uid是当你安装Apk时,系统赋予的,是不变的,除非你卸载了重装,又会重新赋予一个Uid;

参考: 认识Android的UID(Unix user ID)与权限

ANDROID 中UID与PID的作用与区别

‘叁’ android系统开发要用哪些知识

android 技术内幕系统卷
第1章 准备工作 /1 1.1 深入认识android /2 1.1.1 android的系统构架 /2 1.1.2 android的初始化流程 /5 1.1.3 各个层次之间的相互关系 /8 1.1.4 android系统开发(移植)和应用开发 /11 1.2 获取和编译android的源码 /13 1.2.1 环境配置 /13 1.2.2 获取android源码 /14 1.2.3 编译android的源码及其工具包 /16 1.2.4 运行android系统 /21 1.3 开发环境搭建 /23 1.3.1 应用开发环境搭建 /23 1.3.2 源码开发环境搭建 /26 1.4 android源码结构 /32 1.5 小结 /33 第2章 android的内核机制和结构剖析 /34 2.1 linux与android的关系 /35 .2.1.1 为什么会选择linux /35 2.1.2 android不是linux /35 2.2 android对linux内核的改动 /37 2.2.1 goldfish /37 2.2.2 yaffs2 /38 2.2.3 蓝牙 /39 2.2.4 调度器(scheler)/39 2.2.5 android新增的驱动 /40 2.2.6 电源管理 /41 2.2.7 杂项 /41 2.3 android对linux内核的增强 /42 2.3.1 alarm(硬件时钟)/43 2.3.2 ashmem(匿名内存共享)/46 2.3.3 low memory killer(低内存管理)/52 2.3.4 logger(日志设备)/56 2.3.5 android pmem /65 2.3.6 switch /79 2.3.7 timed gpio /88 2.3.8 android ram console /94 2.4 小结 /99 第3章 android的ipc机制--binder /100 3.1 binder概述 /101 3.1.1 为什么选择binder /101 3.1.2 初识binder /102 3.2 binder驱动的原理和实现 /102 3.2.1 binder驱动的原理 /102 3.2.2 binder驱动的实现 /103 3.3 binder的构架与实现 /132 3.3.1 binder的系统构架 /132 3.3.2 binder的机制和原理 /133 3.4 小结 /150 第4章 电源管理 /151 4.1 电源管理概述 /152 4.2 电源管理结构 /152 4.3 android的电源管理机制 /153 4.4 android电源管理机制的实现 /154 4.5 小结 /187 第5章 驱动的工作原理及实现机制 /188 5.1 显示驱动(framebuffer)/189 5.1.1 framebuffer的工作原理 /189 5.1.2 framebuffer的构架 /190 5.1.3 framebuffer驱动的实现机制 /190 5.2 视频驱动(v4l和v4l2)/201 5.2.1 v4l2介绍 /201 5.2.2 v4l2的原理和构架 /201 5.2.3 v4l2的实现 /202 5.3 音频驱动(oss和alsa)/208 5.3.1 oss与alsa介绍 /208 5.3.2 oss的构架与实现 /209 5.3.3 alsa的构架与实现 /213 5.4 mtd驱动 /214 5.4.1 mtd驱动的功能 /214 5.4.2 mtd驱动的构架 /215 5.4.3 mtd驱动的原理及实现 /215 5.5 event输入设备驱动 /223 5.5.1 input的系统构架 /223 5.5.2 event输入驱动的构架 /224 5.5.3 event输入驱动的原理 /224 5.5.4 event输入驱动的实现 /225 5.6 蓝牙驱动(bluetooth)/235 5.6.1 bluetooth驱动的构架 /235 5.6.2 bluez的原理及实现 /237 5.7 wlan驱动(wi-fi)/244 5.7.1 wlan构架 /244 5.7.2 wi-fi驱动的实现原理 /245 5.8 小结 /245 第6章 原生库的原理及实现 /246 6.1 系统c库(bionic libc)/247 6.1.1 bionic libc功能概述 /247 6.1.2 bionic libc实现原理 /248 6.2 功能库 /258 6.2.1 webkit构架与实现 /258 6.2.2 多媒体框架与实现 /275 6.2.3 android sqlite框架及原理 /285 6.3 扩展库 /289 6.3.1 skia底层库分析 /289 6.3.2 opengl底层库分析 /299 6.3.3 android-openssl实现及运用 /306 6.3.4 freetype及font engine manager /317 6.3.5 freetype结构体系和渲染流程 /317 6.4 原生服务 /328 6.4.1 audioflinger实现 /328 6.4.2 surfaceflinger实现 /341 6.5 小结 /353 第7章 硬件抽象层的原理与实现 /354 7.1 硬件抽象层的实现原理 /355 7.1.1 android hal构架 /355 7.1.2 android hal的实现 /357 7.2 android overlay构架与实现 /361 7.2.1 android overlay系统构架 /361 7.2.2 overlay hal框架与实现 /362 7.2.3 overlay与surfacefinger /369 7.3 android camera 构架与实现 /375 7.3.1 android camera系统构架 /375 7.3.2 camera hal框架与实现 /377 7.3.3 camera本地实现 /385 7.4 android audio hal实现 /394 7.4.1 audio hal框架 /395 7.4.2 android默认的audio hal实现 /398 7.4.3 mp功能的audio hal实现 /400 7.4.4 基于a2dp的蓝牙音频设备hal实现 /402 7.4.5 模拟器上的audio hal实现 /403 7.5 android ril实现 /404 7.5.1 android ril构架 /404 7.5.2 radiooptiongs实现 /407 7.5.3 libril库实现 /409 7.5.4 reference-ril库实现 /415 7.5.5 rild守护进程实现 /418 7.5.6 request流程分析 /423 7.5.7 response流程分析 /427 7.6 android sensor hal实现 /434 7.6.1 android sensor构建 /434 7.6.2 sensor hal接口 /435 7.6.3 sensor hal实现 /438 7.7 android wifi hal实现 /441 7.7.1 android wifi系统构架 /441 7.7.2 wpa_supplicant框架 /442 7.7.3 wifi hal实现 /444 7.8 android蓝牙本地实现 /447 7.8.1 android蓝牙构架 /447 7.8.2 bluez结构体系 /448 7.8.3 bluez适配层 /452 7.9 android 定位实现 /453 7.9.1 定位系统构架 /453 7.9.2 gps hal实现 /454 7.10 android power hal实现 /459 7.11 android vibrator hal实现 /461 7.12 小结 /462 第8章 dalvik虚拟机的构架、原理与实现 /463 8.1 dalvik虚拟机概述 /464 8.1.1 什么是dalvik虚拟机 /464 8.1.2 dalvik虚拟机的功能 /464 8.1.3 dalvik虚拟机与java虚拟机的区别 /465 8.2 dalvik构架与实现 /466 8.2.1 dalvik系统构架 /466 8.2.2 dx和dexmp工具 /468 8.2.3 .dex文件格式解析 /470 8.2.4 dalvik内部机制 /487 8.2.5 dalvik进程管理 /492 8.2.6 dalvik内存管理 /501 8.2.7 dalvik加载器 /509 8.2.8 dalvik解释器 /517 8.2.9 dalvik jit /519 8.3 jni的构架与实现 /523 8.3.1 jni构架 /523 8.3.2 jni实现 /524 8.4 小结 /526 第9章 android 核心库 /527 9.1 android核心库简介 /528 9.2 android系统api /529 9.2.1 android包 /529 9.2.2 android资源包 /529 9.2.3 apicheck机制 /529 9.3 小结 /532 后记 /533

‘肆’ Android源码解析Window系列第(一)篇---Window的基本认识和Activity的加载流程

您可能听说过View ,ViewManager,Window,PhoneWindow,WindowManager,WindowManagerService,可是你知道这几个类是什么关系,干嘛用的。概括的来说,View是放在Window中的,Window是一个抽象类,它的具体实现是PhoneWindow,PhoneWindow还有个内部类DecorView,WindowManager是一个interface,继承自ViewManager,它是外界访问Window的入口,,提供了add/remove/updata的方法操作View,WindowManager与WindowManagerSerice是个跨进程的过程,WindowManagerService的职责是对系统中的所有窗口进行管理。如果您不太清楚,建议往下看,否则就不要看了。

Android系统的Window有很多种,大体上来说,Framework定义了三种窗口类型;

这就是Framework定义了三种窗口类型,这三种类型定义在WindowManager的内部类LayoutParams中,WindowManager讲这三种类型 进行了细化,把每一种类型都用一个int常量来表示,这些常量代表窗口所在的层,WindowManagerService在进行窗口叠加的时候,会按照常量的大小分配不同的层,常量值越大,代表位置越靠上面, 所以我们可以猜想一下,应用程序Window的层值常量要小于子Window的层值常量,子Window的层值常量要小于系统Window的层值常量。 Window的层级关系如下所示。

上面说了Window分为三种,用Window的type区分,在搞清楚Window的创建之前,我们需要知道怎么去描述一个Window,我们就把Window当做一个实体类,给我的感觉,它必须要下面几个字段。

实际上WindowManager.LayoutParams对Window有很详细的定义。

提取几个重要的参数

Window是一个是一个抽象的概念,千万不要认为我们所看到的就是Window,我们平时所看到的是视图,每一个Window都对应着一个View,View和Window通过ViewRootImpl来建立联系。有了View,Window的存在意义在哪里呢,因为View不能单独存在,它必须依附着Window,所以有视图的地方就有Window,比如Activity,一个Dialog,一个PopWindow,一个菜单,一个Toast等等。

通过上面我们知道视图和Window的关系,那么有一个问题,是先有视图,还是先有Window。这个答案只有在源码中找了。应用程序的入口类是ActivityThread,在ActivityThread中有performLaunchActivity来启动Activity,这个performLaunchActivity方法内部会创建一个Activity。

如果activity不为null,就会调用attach,在attach方法中通过PolicyManager创建了Window对象,并且给Window设置了回调接口。

PolicyManager的实现类是Policy

这样Window就创建出来了, 所以先有Window,后有视图,视图依赖Window存在 ,再说一说视图(Activity)为Window设置的回调接口。

Activity实现了这个回调接口,当Window的状态发生变化的时候,就会回调Activity中实现的这些接口,有些回调接口我们还是熟悉的,dispatchTouchEvent,onAttachedToWindow,onDetachedFromWindow等。

下面分析view是如何附属到window上的,通过上面可以看到,在attach之后就要执行callActivityOnCreate,在onCreate中我们会调用setContentView方法。

getWindow获取了Window对象,Window的具体实现类是PhoneWindow,所以要看PhoneWindow的setContentView方法。

这里涉及到一个mContentParent变量,他是一个DecorView的一部分,DecorView是PhoneWindow的一个内部类,我先介绍一下关于DecorView的知识。

DecorView是Activity的顶级VIew,DecorView继承自FrameLayout,在DecorView中有上下两个部分,上面是标题栏,下面是内容栏,我们通过PhoneWindow的setContentView所设置的布局文件是加到内容栏(mContentParent)里面的,View层的事件都是先经过DecorView在传递给我们的View的。

OK在回到setContentView的源码分析,我们可以得到Activity的Window创建需要三步。

- 1、 如果没有DecorView,在installDecor中创建DecorView。

- 2、将View添加到decorview中的mContentParent中。

- 3、回调Activity的onContentChanged接口。

先看看第一步,installDecor的源码

installDecor中调用了generateDecor,继续看

直接给new一个DecorView,有了DecorView之后,就可以加载具体的布局文件到DecorView中了,具体的布局文件和系统和主题有关系。

在看第二步,将View添加到decorview中的mContentParent中。

直接将Activity视图加到DecorView的mContentParent中,最后一步,回调Activity的onContentChanged接口。在Activity中寻找onContentChanged方法,它是个空实现,我们可以在子Activity中处理。

到此DecorView被创建完毕,我们一开始从Thread中的handleLaunchActivity方法开始分析,首先加载Activity的字节码文件,利用反射的方式创建一个Activity对象,调用Activity对象的attach方法,在attach方法中,创建系统需要的Window并为设置回调,这个回调定义在Window之中,由Activity实现,当Window的状态发生变化的时候,就会回调Activity实现的这些回调方法。调用attach方法之后,Window被创建完成,这时候需要关联我们的视图,在handleLaunchActivity中的attach执行之后就要执行handleLaunchActivity中的callActivityOnCreate,在onCreate中我们会调用setContentView方法。通过setContentView,创建了Activity的顶级View---DecorView,DecorView的内容栏(mContentParent)用来显示我们的布局。 这个是我们上面分析得到了一个大致流程,走到这里,这只是添加的过程,还要有一个显示的过程,显示的过程就要调用handleLaunchActivity中的handleResumeActivity方法了。最后会调用makeVisible方法。

这里面首先拿到WindowManager对象,用tWindowManager 的父接口ViewManager接收,ViewManager可以
最后调用 mDecor.setVisibility(View.VISIBLE)设置mDecor可见。到此,我们终于明白一个Activity是怎么显示在我们的面前了。
参考链接:
http://blog.csdn.net/feiclear_up/article/details/49201357

热点内容
怎么翻录加密视频 发布:2025-02-06 21:58:12 浏览:550
逃离塔科夫启动器选什么服务器 发布:2025-02-06 21:44:48 浏览:292
我的世界手机版服务器开服教程 发布:2025-02-06 21:43:01 浏览:272
微信娱乐源码 发布:2025-02-06 21:34:53 浏览:530
编译翻译运行 发布:2025-02-06 21:05:20 浏览:201
安卓源码版本 发布:2025-02-06 20:51:34 浏览:433
安卓系统网络播放器哪个好 发布:2025-02-06 20:42:02 浏览:818
头条缓存的视频格式 发布:2025-02-06 20:32:18 浏览:116
ftp不显示文件夹 发布:2025-02-06 20:30:37 浏览:127
苹果手机解压怎么打开 发布:2025-02-06 20:29:35 浏览:476