zoukankan      html  css  js  c++  java
  • Android项目结构 以及体系结构

    学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了

    Android项目一般由以下几个部分构成

    以上是一个简单的Android项目结构目录图

    1. src  主要是 源文件目录 放置业务逻辑代码以及相应的UI代码

    2. gen 下面有个R.java文件夹 该文件是建立Android项目自动生成的  该文件是只读文件 不可以更改 里面有很多静态 类名字与res的中资源文件一一对应

    一般有attr ,drawable id raw layout string xml 具体看你的项目文件

    3. assets 可以包含系统使用到的文件 比如一些图片 mp3 视频类文件

    4. res 资源文件 主要有以下文件

    drawable : 我们一般放置一些样式xml也放些图片

    drawable-hdpi 主要放置一些高清晰的 像素的图片

    drawable - l 放置一些低像素的图片

    drawable - m 放置一般像素的图片 

    layout 主要放置一些布局文件

    menu 是放置一些 xml菜单式文件

    ==============================

    arrays.xml 一些数组元素

    colors.xml 一些颜色的值

    strings.xml一些字符串

    styles.xml 样式文件

    dimens.xml 一些像素尺寸的文件

    =======================

    values-en-rUS 英文资源文件包

    values-zh-rCN 中文资源文件包

    系统会感觉系统设置的语言 应用程序选择相应的资源文件 实现国际化

    AndroidManifest.xml项目的总配置文件 记录了各种组件 ,以及应用程序相应的功能,可以在里面配置相应的服务 权限 等等(后期详细介绍)

    defalut.properties 主要记录android的环境信息 比如Android的版本信息

    简单讲下Android体系结构

    这是Android官方的图纸

    1. Applicaiton 是android核心应用程序包 连同Android一起发布的 如 发短信 打电话 Email 日历 等等 后期给大家一一介绍 android 源码中的应用程序

    2. framework 应用程序框架,开发人员可以访问API框架进行应用程序开发 如

    丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。

      *内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据

      * 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。

      * 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

      * 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

    3.系统运行库

      1)程序库

      Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:

      * 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ),它是专门为基于embeddedlinux的设备定制的。

      * 媒体库-基于PacketVideoOpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR, JPG, PNG 。

      * Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。

      * LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

      * SGL - 底层的2D图形引擎

      * 3D libraries - 基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

      * FreeType -位图(bitmap)和矢量(vector)字体显示。

      * SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

      2)Android 运行库

      Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

      每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。

      Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

      4.Linux 内核

      Android 的核心系统服务依赖于 Linux 2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。

     

  • 相关阅读:
    吃货联盟项目
    字串符笔记
    带有参的方法
    js:自动亮起100盏灯
    JS字面量创建方式的优缺点
    为什么说对象字面量赋值比new Object()高效?
    javascript 字面量
    vue学习(一)、Vue.js简介
    Redis(二):c#连接Redis
    Redis(一):centos下安装。
  • 原文地址:https://www.cnblogs.com/zhangkaimin/p/4302741.html
Copyright © 2011-2022 走看看