Android系统架构
一、Applications(应用程序)
Home:桌面
Contacts:联系人
Phone:电话
Dialer:拨号
Voice Dial:语音拨号
Browser:浏览器
SMS/MMS:短信/彩信
IM:即时通讯
Email:电子邮件
Camera:照相机
Photo Album:相册
Media Player:播放器
Calendar:日历
Clock:时钟
Alarm:闹铃
Caculator:计算器
二、Application Framework(应用程序框架)
常用的Java API接口
Activity Manager:活动管理器
Content Providers:内容共享器
Telephony Manager:电话管理
Notification Manager:通知管理
Window Manager:窗口管理器
View System:视图系统
Resource Manager:资源管理
Location Manager:定位管理
Package Manager:包管理
XMPP Service:可扩展通讯和表示协议服务,用于即时通讯
三、系统运行库
(一)Android Runtime(Android运行时)
Core Libraries:Java核心库
ART(Android runtime):Android运行环境,从Android4.4开始发布
Dalvik Virtul Machine:达尔维克虚拟机,在Android5.0以后被ART取代
(二)Libraries(C/C++库)
Surface Manager:界面管理
Media Framework:多媒体框架
SQLite:数据库
Blink:Chrome浏览器的内核,就是原来的Webkit内核
OpenGL ES:3D图形引擎
SGL:2D图形引擎
FreeType:免费字体授权
SSL(Secure Sockets Layer):安全套接层
libc:C语言基本函数库
四、Hardware Abstraction Layer(硬件抽象层)
Android5.0新增的层,位于Linux内核之上,系统运行库之下。简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽底层的实现细节。
Graphics:图像
Audio:音频
Camera:照相机
Bluetooth:蓝牙
GPS:全球定位系统
Radio(RIL):无线广播接口
WiFi
五、Linux Kernel(Linux内核)
WiFi Driver:WiFi驱动
Bluetooth Driver:蓝牙驱动
Camera Driver:照相机驱动
Display Driver:显卡驱动
Audio Drivers:声卡驱动
Flash Memory Driver:闪存驱动
Shrared Memory Driver:小内存驱动
USB Driver:USB驱动
Keypad Driver:键盘驱动
Binder(IPC) Driver:进程通信驱动
Power Management:电源管理
Android项目结构(以Android Studio的Project视图为例)
切换到Project视图才能查看项目真实结构
一、.gradle:软件自动生成文件,无需修改
二、.idea:软件自动生成文件,无需修改
三、app
(一)build:编译时自动生成文件,无需修改
(二)libs:第三方jar包存放目录
(三)src
1.androidTest—ExampleInstrumentedTest.xml 测试用例
2.main
(1)assets:存放网页、图片、JSON等资源
需要时手动创建,通过getAssets()方法获取AssetManager对象
(2)java:存放项目java代码
cn.kgc.app001—MainActivity.java 主界面
(3)jniLibs:存放C/C++的动态库(.so文件)
(4)res:存放项目静态资源
❶anim:动画,默认不生成,需要时手动创建
❷drawable:图片
baby001.png(xxhdpi)图片资源
shape.xml 形状,默认不生成,需要时手动创建
selector.xml 选择器,默认不生成,需要时手动创建
❸layout:布局
activity_main.xml 布局文件
❹menu:菜单,默认不生成,需要时手动创建
❺mipmap:图标
ic_launcher.png(5)图标资源
❻raw:原始照片文件,默认不生成,需要时手动创建
❼values 英语
colors.xml 颜色
dimens.xml(2)尺寸
strings.xml 字符串
styles.xml 样式
❽values-zh-cn 简体中文
❾xml 其他xml文件,默认不生成,需要时手动创建
(5)AndroidManifest.xml:APP配置文件
❶包名称 package="cn.bdqn.app001"
❷APP图标 android:icon="@mipmap/ic_launcher"
❸APP名称 android:label="@string/app_name"
❹APP主题 android:theme="@style/AppTheme"
❺Activity名称 android:name=".MainActivity"
❻设置此Activity为首页 android:name="android.intent.action.MAIN"
❼启动此Activity android:name="android.intent.category.LAUNCHER"
3.test—ExampleUnitTest.xml 单元测试用例
(四).gitignore:将app指定目录排除在版本控制之外
(五)app.iml:Intellij IDEA自动生成文件,无需修改
(六)build.gradle:app gradle构建脚本
compile project(':abc:PullToRefresh') 配置第三方库
compileSdkVersion 25 当前SDK
buildToolsVersion "25.0.1" 打包工具版本
(Ecplise在project.properties设置sdk.buildtools=17.0.0)
applicationId "cn.bdqn.app001" 包名
minSdkVersion 15 最低SDK
targetSdkVersion 25 最高SDK
versionCode 1 内部版本号,int类型
versionName "Mars2" 发布版本号,String类型
(七)proguard-rules.pro:代码混淆规则
四、build:编译时自动生成文件,无需修改
五、gradle:gradle wrapper配置文件
六、.gitignore:将指定目录排除在版本控制之外
七、build.gradle:项目全局的gradle构建脚本
classpath 'com.android.tools.build:gradle:2.0.0'gradle版本号
八、gradle.properties:全局的gralde配置文件
org.gradle.jvmargs=-Xmx1536m 可用内存
九、gradlew:Linux和Mac中的gradle命令
十、gradlew.bat:Windows中的gradle命令
十一、HelloWorld.iml:Intellij IDEA自动生成文件,无需修改
十二、local.properties:指定本地sdk路径
sdk.dir=D\:\\android\\sdk SDK目录
十三、settings.gradle:指定项目中所有引入的模块
在项目根目录新建abc目录
将第三方Library库文件复制到abc目录下,导入库
include ':app', ':abc:PullToRefresh'
APK(Android Package)文件目录
下载apk后必须用压缩软件解压出来
一、assets 存放网页、图片、JSON等资源
1.系统不会自动为其生成一个资源ID
2.通过getAssets()方法获取AssetManager对象
二、lib/armeabi 存放C语言文件
libgetuiext.so 广告推送接口
三、META-INF
CERT.RSA 公钥和加密算法,文件名可以修改
CERT.SF 签名
MANIFEST.MF 摘要
rxjava.properties 一个实现异步操作的Java库
四、org/apache/http/entity/mime
version.properties 存放Apache授权信息
五、res 可编译资源
(一)anim 动画
(二)color 颜色
(三)drawable 图片
文件后缀为 9.png是通过draw9patch生成的可自动伸缩位图
(四)layout 布局
(五)mipmap 存放APP启动图标
(六)raw 直接复制到设备中的任意文件,无需编译
(七)values 值
array.xml 数组
colors.xml 颜色
dimens.xml 尺寸
strings.xml 字符串
styles.xml 样式