开发安卓APP 安卓的系统架构构算是C/S架构么?

Android&客户端应用开发的架构
Androi App
工程结构搭建
本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构。
关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的。
从艺术的角度看,其实我们是在追求一种美。
本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板。
2.&久忆日记
3.网易新闻
& & & 4.小米应用
微盘的架构比较简单,我把最基本,最主干的画了出来:
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1915.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
第一层:com.sina.VDisk:com.sina(公司域名)+app(应用程序名称) 。
第二层:各模块名称(主模块VDiskClient和实体模块entities)
第三层:各模块下具体子包,实现类。
从图中我们能得出上述分析中一个最简单最经典的结构,一般在应用程序包下放一些全局的包或者类,如果有多个大的模块,可以分成多个包,其中包括一个主模块。
在主模块中定义基类,比如BaseActivity等,如果主模块下还有子模块,可以在主模块下建立子模块相应的包。说明一点,有的时候如果只有一个主模块,我们完全可以省略掉模块这一层,就是BaseActivity.java及其子模块直接提至第二层。
在实体模块中,本应该定义且只定义相应的实体类,供全局调用(然而实际情况可能不是这样,后面会说到)。在微盘应用中,几乎所有的实体类是以xxx+info命名的,这种命名也是我赞成的一种命名,从语义上我觉得xxxModel.java这种命名更生动更真实,xxxModel给我一种太机械太死板的感觉,这点完全是个人观点,具体操作中以个人习惯为主。还有一点,在具体的xxxInfo,java中有很多实体类中是没有get/set的方法,而是直接使用public的字段名。这一点,我是推荐这种方式的,特别是在移动开发中,get/set方法很多时候是完全没有必要的,而且是有性能消耗的。当然如果需要对字段设置一定的控制,get/set方法也是可以酌情使用的。
2. 久忆日记
相比于微盘的工程结构,久忆日记的结构稍微复杂了一些。如下图:
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//3174.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
1).第一层和前面微盘一样的.
2).第二层则没有模块分类,直接把需要的具体实现类都放在下面,主要日记的一些日记相关的Activity。
3).第二层的实体包命令为model包,里面不仅存放了实体类xxx.java,而且存放了更高一级的实体类的相关类,比如xxxManager.java,xxxFactory.java.关于这一点,我们可以参考一下android.jar中结构,我们发现,Activity.java和ActivityManager.java,View.java和ViewManager.java,Bitmap.java和BitmapFactory.java等等N多类似的一对类都在同一个包下,我个人觉得实体包下存放实体类相应的Manager和Factoty类也是正确的,是我们应该采纳的一种结构。这里就打破了前面微盘中说的实体包下存放且只存放实体类的说法了。在现实中,从灵活和合理的角度,久忆日记的这种实体包中存放对象内容更加实用。
4).第二层中增加了前面微盘中没有涉及到的config,constant和common包。第一,其中config中存储一些系统配置,比如名称,应用参数等系统级的常量或者静态变量,当然,如果你有其他大模块的配置,比如如果拥有复杂的用户管理模块的话,完全可以增加一个UserConfig.java中存储用户的一些配置信息等等。第二,constant包,此包下存放的都是public
final常量,定义状态,类型等等。出于性能考虑,android开发中我不推荐使用枚举。common包中定义一个公用库,这里因为应用单一,无法很好的说明common包内容结构。
5).common包要涉及后面多个软件比较后我们再得出结论。
通过久忆日记的分析,借鉴到了不少的东西,使我们的架构更丰满更强大了。&
3.网易新闻
网易新闻确实做的不错,从应用的角度看,是我最欣赏的应用之一。它的工程结构是怎么样的呢?
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//3332.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
网易新闻的工程结构和前面2各app又有很多的不同,它并没有按照模块来分,而是主要按照组件的类型来分的,然后把此类型所有的类全部放在其下。那么这种把所有activity全部放在activity包下的分法的确在android开发中比较普遍。
1).第一层被分成了两层,可以看出来,这里肯定是采用了公用包jar,如此说来,我们开发公用包的时候也应该按照"公司域名+公用模块名称"组合方式来命名比较好。
2).第三层(绿色层)中activity和service包下都是存放所有的activity组件和service组件,其实这里面包含了一种代码习惯。往往activity相关的类如监听器,线程,适配器等非常多的类,这些不好直接丢在activity包下,而是直接写在相应的activity中以匿名或者内部类形式定义,否则activity包和service包看上去会比较杂乱。
因为android的app很可能不是很大,activity或者service包也不会杂乱,所以网易新闻的这种方式也是很有参考借鉴价值的。
4.小米应用
小米应用包括3个应用,小米分享,小米阅读,小米标签,从实际代码开发来看,我感觉不是同一个团队,或者同一组人开发的。
这种情况下,他们的架构又使如何?
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//0364.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1614.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//2797.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
&上面的结构以及结构内部的细节其实很多地方我都是不大苟同的,但是能做出来好东西就是值得大家学习的,所以我只把其中我认为最值得学习的一点拿出来说。
&首先,widget,provider这些特殊模块分类建立单独的模块包即可,这里久不多说什么。
&第二,通过观察,我们发现小米分享中每个应用都有common包,不仅有应用程序级别的common包,而且有应用程序内级别的common包。我想说的是,android开发中随着项目开发的积累,确能提取到很多公用的方法、类、功能模块。各个项目之间如此,各个项目内部也是如此,所以针对项目类被各个模块调用的方法,类也可以提取出相应的公用库。
&那么这里有个问题,公用common包的内部包可能涉及到很多的内容,是否要分包分级呢,又如何分包分级?我觉得,这个因情况而已,一般来说移动开发,为了减少包的大小,我们会控制common包的膨胀,往往common包仅仅包括一些最简洁最经典的东西,东西又很少的话就无需分包,但是如果贵公司开发成百上千,每个项目都用到行为分析,意见反馈等公用模块,分一下包会更清楚一点。总而言之,分不分包无关紧要,尽量让你的代码结构清晰,思路了然就好。
5.聚各家之长,集大家之成。
上面粗略的分析之后,我们应该对android程序的架构有一个感觉,清晰而杂乱。我也没有去了看更多其他应用的结构,暂时就总结一下,得出一个我们自己的通用的工程结构。
假如公司名为tianxia,目前公司准备开发读书应用,交友应用,生活服务应用。
第一时间我们应该得出下面这种整个的架构(具体的app开发当然要分开):
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4467.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
公司下开发3个应用reader,friend,life,其中common包为这三个应用共用,config,oauth为可选,view存放一些最通用的自定义view,比如对话框,定制的列表等,如果你觉得有些view可能不会通用,最好把它放在应用程序类的common包下。
如果各位看过的话,对于这种多应用模式,应该存在android库共用情况,来解决资源替换,工程复用的问题。所以我又修改如下:&<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4744.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
其中BaseApplication做一些所有app都会用到的基础初始化或者配置。之后其他应用的application应该都继承此BaseApplication。
base是一个android库,也是一个完整的android工程,而common只是一个jar文件,当然你也可以根据需要作为android库来开发。其他主工程reader,friend,life应该引用base工程。
ad包存放公司自定义的一些软广告。
feedback包下存储一些用户反馈等通用功能模块。
其实,很多情况下,upgrade模块也可以添加到base工程下,制定统一的软件升级机制。&
接下来我们以reader为例子,来详细完成它的工程结构的设计。
<img STYLE="DispLAY: MArGin-LeFT: MArGin-riGHT: auto" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4522.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
其中,config包下的AppConfig.java存放应用程序的根配置,比如版本,目录配置等等。
module包下分为各个模块,blog为博客模块,bbs为论坛模块,person为整站个人信息模块,widget表示一种特殊功能模块。
common包下存放一些工具类,本应用程序的一些自定义View等等。
再结合之前所讲的内容,我们把整个串起来,完善一个reader的最后的架构如下(两外两个freind和life亦是类似如此):
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/images//3019.png"
ALT="Android&客户端应用开发的架构"
TITLE="Android&客户端应用开发的架构" />
&注意:1).功能模块和类型模块均可以划分,如果没有需要的话,模块的划分都可以省略。
&2).activity和service这类组件划分,如果没有需要的话,组件的划分都可以省略。
&3).所有的划分,如果没有需要的话,所有的划分都可以省略。
&但是,但是,这种分类,我个人还是觉得层次清晰,架构明朗,值得参考的,当然其中很多细节我也没有仔考虑,如有不妥,还请发现者指出。&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&【06-10资讯】安卓系统整体结构介绍_android吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,066,650贴子:
【06-10资讯】安卓系统整体结构介绍收藏
1.表示这不是水贴
2.大神勿喷.只是普及下安卓的结构
3.手机党发帖不容易.需吧友配合请勿插楼
4.内容不定期更新
5.如有错误之处.请吧友多多指教
学android开发选&达内&,上市公司专为培养android&4G&工程师而设计就业培训课程,达内android培训,先就业后付款,学费0困扰,5W家合作企业,助您就业无忧!
安卓系统架构图
分析:第一层:Linux操作系统和驱动(Linux kernel):由C语言实现。Android核心系统服务依赖于Linux2.6内核,包括:安全性、内存管理、进程管理、网络协议、驱动模型。Linux内核也作为硬件和软件栈之间的抽象层。除了标准的Linux内核外,Android还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。第二层:本地框架和Java运行环境(LIBRARIES 和 ANDROID RUNTIME)本地框架是有C/C++实现。包含C/C++库,被Android系统中不同组件使用,它们通过Android应用程序框架为开发者进行服务。系统C库:(libc)从BSD继承过来的标准的C系统函数库,专门是为基于嵌入式Linux的设备定制的库。多媒体库:基于PackerVideo的OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。Suface Manager:显示子系统管理器,并且为多个应用程序提供2D和3D图层的无缝融合。LibWebCore:一个最新的Web浏览器引擎,支持Android浏览器,以及一个可嵌入式的Web视图。SGL:Skia图形库,底层的2D图形引擎。3D libraries:基于OpenGL ES1.0 API的实现;该库可以使用硬件3D加速(如果可用),或者使用高度优化的3D软加速。FreeType:位图(bitmap)和矢量(vector)字体显示。Android运行环境(ANDROID RUNTIME):提供了Java编程语言核心库的大多数功能,由Dalvik Java虚拟机和基础的Java类库组成。Dalvik是Android中使用的Java虚拟机,每个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik被设计成一个可以同时高效运行多个虚拟机实例的虚拟系统。执行后缀名为.dex的Dalvik可执行文件,该格式的文件针对小内存使用做出了优化。同时虚拟机是基于寄存器的,所有的类都是有Java编译器编译,然后通过SDK中的“dx”工具转化为.dex格式由虚拟机执行。Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。第三层:Android应用框架(ANDROID FRAMEWORK)
在Android系统中,开发人员也可以完全访问核心应用程序所使用的API框架。包含的框架入上图(不在陈述)第四层:Android应用程序(APPLICATIONS)注意:Android应用程序都是有Java语言编写的。用户开发的Android应用程序和Android的核心应用程序是同一层次的,它们都是基于Android的系统API构建的。
注意:该结构图并不反映手机的实际分区顺序和位置,只是一个逻辑结构图。 大家可以简单的把手机的 ROM 存储类比为我们电脑上的硬盘,这个硬盘被分成了几个分区:bootloader分区,boot分区,system分区等等。后面我们会逐渐介绍各个分区的用途。所谓的 刷机 我们可以简单的理解成把软件安装在手机的某些分区中,类似于我们在电脑上安装Windows系统。 当按下电源键手机上电启动后,首先从bootloader分区中一个固定的地址开始执行指令,如图所示,bootloader分区分成两个部分,分别叫做primary bootloader和secondary stage bootloader。Primary bootloader主要执行硬件检测,确保硬件能正常工作后将secondary stage bootloader拷贝到内存(RAM)开始执行。Secondary stage bootloader会进行一些硬件初始化工作,获取内存大小信息等,然后根据用户的按键进入到某种启动模式。比如说大家所熟知的通过电源键和其它一些按键的组合,可以进入到recovery,fastboot或者选择启动模式的启动界面等。我们在论坛上看到的bootloader通常指的就是secondary stage bootloader。不过我们不需要关心太多的细节,可以简单的理解为bootloader就是一段启动代码,根据用户按键有选择的进入某种启动模式。 fastboot模式:fastboot是android定义的一种简单的刷机协议,用户可以通过fastboot命令行工具来进行刷机。比如说fastboot flash boot boot.img这个命令就是把boot.img的内容刷写到boot分区中。一般的手机厂商不直接提供fastboot模式刷机,而是为了显示他们的牛B之处,总是会提供自己专有的刷机工具和刷机方法。比如说三星的Odin,摩托的RSD,华为的粉屏等等。但是其本质实际上是相同的,都是将软件直接flash到各个分区中。 recovery模式:recovery是android定义的一个标准刷机协议。当进入recovery模式时,secondary stage bootloader从recovery分区开始启动,recovery分区实际上是一个简单的Linux系统,当内核启动
完毕后,开始执行第一个程序init(init程序是Linux系统所有程序的老祖宗)。init会启动一个叫做recovery的程序(recovery模式的名称也由此而来)。通过recovery程序,用户可以执行清除数据,安装刷机包等操作。一般的手机厂商都提供一个简单的recovery刷机,而大名鼎鼎的CWM Recovery就是一个加入了很多增强功能的recovery,要想用上CWM Recovery前提是recovery分区可以被刷写。大家在论坛上看到的解锁bootloader,通常指的就是解锁recovery或fastboot,允许刷写recovery分区,这样大家就可以用上喜爱的CWM Recovery了。 手机除了普通的CPU芯片以外,还有MODEM处理器芯片。该芯片的功能就是实现手机必需的通信功能,大家通常所的刷RADIO就是刷写modem分区。
2. 正常启动 当我们只是按下电源键开机时,会进入正常启动模式。Secondary stage bootloader会从boot分区开始启动。Boot分区的格式是固定的,首先是一个头部,然后是Linux内核,最后是用作根文件系统的ramdisk。 一般针对每个机型的完整刷机包中会有一个boot.img文件,这就是boot分区镜像文件。 当Linux内核启动完毕后,就开始执行根文件系统中的init程序,init程序会读取启动脚本文件(init.rc和init.xxxx.rc)。启动脚本文件的格式大家可以在网上找到很多参考资料,这里就不写了,而且我们在原厂ROM上移植MIUI的原则是不修改boot分区,因为有一些机型无法修改boot分区。 根文件系统中有一个重要的配置文件,叫default.prop,该文件的内容一般为: # # ADDITIONAL_DEFAULT_PROPERTIES # ro.secure=1 ro.allow.mock.location=1 ro.debuggable=0 persist.service.adb.enable=1。 文件中的每一行对某个属性赋值,在后续的文章中我们还会谈到属性。这里面大家需要注意的两个属性:ro.secure和ro.debuggable。如果ro.secure=0允许我们运行adb root命令。在下一篇我们会详细介绍adb,这是我们做ROM移植的利器。通常大家说得内核 ROOT 指的就是ro.secure=0。ROOT权限只是的手机上有一个名为授权管理的程序(Superuser.apk)可以授予程序root用户的权限。ro.deguggable=1允许调试系统APP。 init程序读取启动脚本,执行脚本中指定的动作和命令,脚本中的一部分是运行system分区的程序,下一节我们就来看看system分区的结构。
3. system分区 在讲system分区之前,我们先来看下面这张 Android 的软件系统架构图。 从上到下依次为: 核心应用层:这一层就是大家平常所接触的各种各样的系统自带应用,比如联系人,电话,音乐等。应用层往下就是开发人员所接触的。 框架层:这一层是Android系统的核心,它提供了整个Android系统运作的机制,像窗口管理,程序安装包管理,开发人员所接触的Activity, Service, broadcast等等。 JNI层:JNI层是Java程序和底层操作系统通信的一个机制,它使得Java代码可以调用C/C++代码来访问底层操作系统的API。 Dalvik虚拟机:Android开发使用Java语言,应用程序的Java代码会被编译成dalvik虚拟机字节码,这些字节码由dalvik虚拟机解释执行。 本地库:本地库一般是由C/C++语言所开发,直接编译成相应CPU的机器码,这其中包含标准C库,用以绘制图形的skia库,浏览器核心引擎webkit等。 HAL:硬件抽象层,为了和各个厂家的不同硬件工作,Android定义了一套硬件接口,比如说为了使用相机,厂家的相机驱动必须提供的接口方法。这样使得上层的代码可以独立于不同的硬件运行。
厂家适配层:本来Android定义的HAL层是直接和厂家提供的设备驱动打交道的,但是目前厂家不想开源HAL部分的代码,因此很多厂家都提供了一个我称之为厂家适配层的代码,这样在HAL层接口的实现只是一个简单的对厂家适配层接口函数的调用。 内核:这一层就是大家熟悉的Linux内核,内核中包含有各种硬件驱动,这些驱动不同的手机厂商不同的手机是不一样的。Linux内核是支持驱动模块化机制的,简单的说就是允许用户动态的加载或者卸载某个硬件驱动,但是目前来看,手机厂商除了提供WIFI驱动单独加载外,其它驱动都是和内核绑定在一起的。
从这张软件结构图来看,除了内核是放在boot分区外,其它层的代码都是在system分区中。
下面结合这张图来介绍system分区的主要目录内容: system/app: app目录下存放的是核心应用,也就是大家熟知的系统APP,这些系统自带的程序是不能简单的卸载的,要通过一些特殊的方式才能删除(大家熟悉的一种方法是用RE文件管理器)。 system/lib: lib目录下存放的是组成JNI层,Dalvik虚拟机,本地库,HAL层和厂家适配层的所有动态链接库(.so文件)。 system/framework: 该目录下存放的是框架层的JAR包,其中对MIUI移植来说有3个最重要的JAR包(framework.jar, android.policy.jar, services.jar)。后续的文章会重点介绍这3个包。 system/fonts: 该目录下存放的是系统缺省的字体文件。 system/media:该目录下存放的是系统所使用的各种媒体文件,比如说开机音乐,动画,壁纸文件等。不同的手机该目录的组织方式可能不一样。如何修改这些文件请参考网上对应机型形形色色的教程,这里不再赘叙。 system/bin: 该目录下存放的是一些可执行文件,基本上是由C/C++编写的。其中有一个重要的命令叫app_process下一节单独介绍。 system/xbin: 该目录下存放的是一些扩展的可执行文件,既该目录可以为空。大家常用的busybox就放在该目录下。Busybox所建立的各种符号链接命令都是放在该目录。 system/build.prop: build.prop和上节说得根文件系统中的default.prop文件格式一样,都称为属性配置文件。它们都定义了一些属性值,代码可以读取或者修改这些属性值。属性值有一些命名规范: ro开头的表示只读属性,即这些属性的值代码是无法修改的。 persist开头的表示这些属性值会保存在文件中,这样重新启动之后这些值还保留。 其它的属性一般以所属的类别开头,这些属性是可读可写的,但是对它们的修改重启之后不会保留。
很多ROM制作者都会修改一下build.prop信息,里面的一些以ro.build开头的属性就是你在手机设置中的关于手机里看到的。可以通过修改build.prop文件来将这个ROM打上自己的印记(XXX所修改)。我见过一个只是删了system/app的一些程序,然后修改build.prop中的ro.build.display.id和ro.build.version.incremental中的两个属性值打上自己的大名的ROM。 system/etc: 该目录存放一些配置文件,和属性配置文件不一样,这下面的配置文件可能稍微没那么的有规律。一般来说,一些脚本程序,还有大家所熟悉GPS配置文件(gps.conf)和APN配置文件(apns-conf.xml)放在这个目录。像 HTC 将相机特效所使用的一些文件也放在这个目录下。
4. Zygote(app_process) 上一节提到init会执行一个重要的命令程序叫app_process,一般大家称之为Zygote。(Zygote是卵的意思,所有的Android进程都是由它生出来的)。Zygote首先会加载dalvik虚拟机,然后产生一个叫做system_server的进程。system_server顾名思义被称作Android的系统服务程序,它主要管理整个android系统。system_server启动完成后开始寻找一个叫做启动器的程序,找到之后由zygote开始启动执行启动器,这就是我们常见到的桌面程序。 上面描述的是一个相当简化的启动过程。
5. data和cache分区 这一节简单的介绍一下data和cache分区。当我们开机进入桌面程序后,一般来说我们都会下载安装一些APP,这些APP都安装在data/app目录下。所有的Android程序生成的数据基本上都保存在data/data目录下。wipe data实质上就是格式化data分区,这样我们安装的所有APP和程序数据就都丢失了。 cache分区从名字上来看是用来缓存一些文件的,比如说一些音乐下载的临时文件,或者下载管理下载的内容基本上放在这个分区。
安卓架构祥解
一、\\system\\bin这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件,Android手机网就主要文件做下简单的分析介绍:
二、\\system\\etc从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。
\\system\\etc\\mountd.conf存储挂载配置文件\\system\\etc\\NOTICE.html提示网页\\system\\etc\\permissions.xml权限许可\\system\\etc\\pvplayer.conf\\system\\etc\\security\\system\\etc\\wifiWLAN相关组件
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\system\\etc\\dhcpcd\\dhcpcd-run-hooks\\system\\etc\\dhcpcd\\dhcpcd.conf\\system\\etc\\dhcpcd\\dhcpcd-hooks\\01-test\\system\\etc\\dhcpcd\\dhcpcd-hooks\\20-dns.conf\\system\\etc\\dhcpcd\\dhcpcd-hooks\\95-configured\\system\\etc\\firmware\\brf6300.bin\\system\\etc\\location\\gps\\system\\etc\\location\\gps\\location定位相关
本次更新完毕
请吧友在此楼回复
更新无动力
用wiki来水,你也够拼的
学习了,对Android算是有了个大体的了解,相信对以后刷机有帮助的
赞\(≧▽≦)/
不错,有帮助
可以概括成liunx内核加安卓框架加ui
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 安卓系统架构 的文章

 

随机推荐