一、
1.Android的软件结构的几个层次
1.1 Linux内核层相关驱动,主要由C语言编写
1.1.1硬件和其他软件堆层的一个抽象隔离层
1.1.2 提供安全机制、内存管理、进程管理、网络协议堆栈和驱动程序等
1.2 核心类库和运行时环境C\C++
1.2.1 由核心运行库和android运行时环境构成函数库,主要提供一组基于C/C++的函数库
Surface Manager,提供应用程序与2D、3D图像层的平滑连接
Media Feamework,实现音视频的播放和录制功能
SQLite 轻量级的关系数据库引擎
OpenGL ES,基于3D图像加速
FreeType位图与矢量字体渲染
WebKit Web浏览器引擎
SGL 2D图像引擎
SSL数据加密与安全传输的函数库
Libc 标准C运行库,Linux系统中底层应用程序开发接口
1.2.2 安卓运行时环境
1.2.2.1 核心库,提供Android系统特有函数功能和JAVA语言函数功能
1.2.2.2 Dalvik虚拟机,实现基于Linux内核的线程管理和内存管理
1.3 应用程序框架 java
1.3.1 提供Android平台基本的管理功能和组件重用机制
Activity Manager 管理应用程序的生命周期
WIndows Manager 启动应用程序的窗体
Content Provider 共享私有数据,实现跨进程的数据访问
Package Manager 管理安装在Android系统内的应用程序
Telephony Manager 管理与拨打和接听电话的相关功能
Resource Manager 允许应用程序使用非代码资源
Location Manner 管理与地图相关的服务功能
Notification Manager 允许应用程序在状态栏中显示提示信息
1.4 应用程序 java
提供一系列的核心应用程序
包括电子邮件客户端、浏览器、通讯录和日历等
2、Android开发环境
2.1安装jdk、配置基本java环境
2.2SDK的目录环境
Add-ons:附件的包
Docs:HTML格式的离线文档
Platforms:SDK核心内容
Tools:工具
2.3 Gradle是一个基于Apache Ant和Apacher Maven概念的项目自动化构建工具。它使用一宗基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置
2.4 在早期的Eclipse环境中,默认继承Activity在最新的AS环境中,API Level >19时,默认继承APPCompatActivity
2.5 build目录时用来保存变异后自动生成的文件,例如:R.java或AIDL文件
2.6 R文件时自动生成的文件,包含对drawable、layout和values目录内的资源文件的引用ID,android程序能够直接通过R类引用目录中的资源
R.java文件不能手工修改,如果资源目录中增加了资源文件后会自动添加
R.java文件在AS中默认不可见
2.7 res:目录存储工程的所有资源
drawable 图片资源
layout 布局资源
图片资源 mipmap
values 常量配置资源
color 颜色
Dimems 距离长度
Strings字符常量
styles 主题,样式
2.8 AndroidManifest.xml是Xml格式的Android程序声明文件,包括了Android系统运行Android程序前所必须掌握的重要信息,这写信息包含应用程序名称、模块组成、授权和SDK最低版本等。而且每个Android程序必须包含一个AndroidManifest.xml文件
package="net.onest.myapplication"> android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
AndroidManifest.xml文件的根元素时manifest,子属性包括xmlns:android、package、android:versionCode和android:versionName等
Xmlns:androi定义了Android的命名空间,值为http://schemas.android.com/apk/res/android
package定义了应用程序的包名称
Android:versionCode定义了应用程序的版本号,是一个整数值,数值越大说明版本越新1,但仅仅在程序内部使用,并不提供给应用程序的使用者
Android:versionName定义了应用程序的版本名称,是一个字符串,仅限于为用户提供一个版本标识。
Manifest元素仅仅能包含一个application元素,application元素中能够声明Android程序中最重要的四个组成部分,包括Activity、Service、BroadcastReceiver和ContentProvider,所定义的属性将影响所有组成部分
属性android:icon定义了Android应用程序的图标
属性android:label则定义了android应用程序的标签名称
Activity时对Activity子类的声明,必须在AndroidManifest.xml文件中声明的Activity才能在用户界面中显示
属性android:name定义了属性Activity类的名称,可以时完整的类名称,也可以时简化后的类名称
属性android:label则定义了Activity的标签名称,标签名称将在用户界面的Activity上部显示
intent-filter中声明了两个子元素action和category。intent-filter使程序在启动时,将.MainActivity这个Activity作为默认启动模块
2.9 android应用程序的构成