Android课堂笔记(一)环境、概念、创建
1.1.1 Android背景与当前的状况
1.Android系统的命名都是以点心来命名。
2.系统版本众多,必须面对的Android的"碎片化"问题:
①系统碎片化:开发App时可能需要做到低版本兼容;各种Rom定制的盛行,国人都喜欢对原生系统做一些更改,这导致了在原生系统上可行,而在定制Rom上不可行的问题,比如相机调用
②屏幕碎片化:市面上各种各样屏幕尺寸的手机,4.3寸,5.3寸等等,还有Android平板,开发时要处理屏幕适配问题。
1.1.2 Android系统特性与平台架构
1.系统结构
①应用程序框架支持组件的重用与替换(app发布时遵守了框架的约定,其他app也可以使用该模块)
②Dalvik虚拟机:安卓字节码在DVM运行时进行解析。DVM是移动应用特有的虚拟机。集成的浏览器:开源的WebKit
③SQLite结构化的数据存储
④优化的图形库:多媒体支持、GSM电话技术、蓝牙等
⑤采用软件叠层方式构建
2.平台架构图
3.架构解释
①Application(应用程序层) :应用层的开发,包括系统内置的一组应用程序,使用Java语言。
②Application Framework(应用程序框架层) :系统内置、自己编写的App都需要使用到这层。
比如想弄来电黑名单,自动挂断电话,需要用到电话管理(TelephoneManager) 通过该层可以轻松的实现挂断操作,而不需要关心底层实现。
③Libraries(库) + Android Runtime(Android运行时) :Libraries(库) :Android提供了一组C/C++库,为平台的不同组件所使用,比如媒体框架;Android Runtime:由Android核心库集 + Dalvik虚拟机构成。
Dalvik虚拟机是针对移动设备的虚拟机,特点:不需要很快的CPU计算速度和大量的内存空间;每个App都单独地运行在单独的Dalvik虚拟机内,即每个app对应一条Dalvik进程。
运行流程:
④Linux内核:涉及底层驱动,一些系统服务,比如安全性,内存管理以及进程管理等。
※ 架构参考网站:https://www.runoob.com/android/android-architecture.html
1.2.1 开发环境
1.现在主流的Android开发环境有: ①Eclipse + ADT + SDK (谷歌不再更新)②Android Studio + SDK(过渡方向)
2.术语解析:
- Dalvik(DVM): Android特有的虚拟机,安卓字节代码由DVM运行解析。
- AVD: (android virtual machine):安卓虚拟设备,就是安卓的模拟器
- ADT: (android development tools)安卓开发工具,链接IDE和SDK的桥梁。
- SDK:(software development kit)软件开发工具包,为开发者提供库文件和其他开发工具。
- DDMS:(dalvik debug monitor service)安卓调试工具
- adb:安卓调试桥,在sdk的platform-tools目录下,功能很多,命令行必备
- DX工具:将.class转换成.dex文件
- AAPT:(android asset packing tool),安卓资源打包工具
- R.java文件:由aapt工具根据App中的资源文件自动生成,可以理解为资源字典
- AndroidManifest.xml:app包名 + 组件声明 + 程序兼容的最低版本 + 所需权限等程序的配置文件
1.2.2 移动应用
1.移动应用:在移动设备上运行的软件,开发时考虑:目标移动设备、软件性能等。
2.主要类别: ①多媒体应用:视频/音频播放器,图形/图像查看工具等
②实用工具:联系人管理工具/任务管理器/通话管理器等
③基于Web的应用:搜索工具,即时通讯等
④企业应用:Microsoft office Mobile和ThinkFree
其他
1.2.3 移动平台
1.移动平台:用于运行移动应用的软件平台。移动应用是根据底层移动平台开发的。
2.移动平台分类:
➢ 厂商开发的私有平台,例如: ✓ iOS apple ✓ 黑莓 (BlackBerry) RIM
➢ 第三方私有平台,例如 Windows Mobile。Microsoft
➢ 免费和开源平台,例如: ✓ Android google ✓ Symbian Nokia
3.主流平台介绍:
①Ios:ios是苹果公司封闭的私有平台,它与底层硬件紧密捆绑.,ios在开发者支持面有限,不开源、可伸缩性低。
②Android:➢ Android主要由Google所有,更准去来说属于开放手机联盟 (83家科技和移动组织组成的联盟)
➢ Android开源、可伸缩性高、基于Linux的操作系统、应用是以java为基础、操作系统分化、硬件效率低。
➢ Android 平台提供应用可用于与底层 Android 系统交互的开发框架 API,每个Android平台版本都有一个API级别关联。
4.SDK IDE区别:
SDK:能够进行开发的环境。
IDE:SDK环境可以通过添加插件进而添加其他功能,这种将想要的插件安装在SDK上的环境称为IDE。
如:①Symbian 开发环境由 Qt Creator 和 Qt SDK 组成。
②Android 开发环境需要 Android 开发工具 (ADT),是Eclipse的插件。
③Ios XCode IDE ,XCode工具 Instruments 用于分析代码性能剖析整个系统。
5.DVM JVM区别:
Java :.java文件 -> .class文件 -> .jar文件
JVM基于栈,编译运行慢;执行.class格式字节码;所有应用都运行在同一个JVM,即一个实例。
Android :.java文件 –> .class文件 -> .dex文件
DVM基于寄存器,编译运行快;执行.dex格式字节码(压缩.class文件);单个应用单独虚拟机,即单独进程。
1.3.1 安卓应用的构建块
1.Android 应用是使用以下四大组件构建块(应用程序组件)构建的:
活动 activity ,服务 service ,内容提供者 content provider ,广播接收器 broadcast receiver
2.View -- 表现层----服务层---持久层---数据库
活动----服务---内容提供者—数据库—广播接收器
3.活动:一个activity通常就是一个单独的屏幕(窗口),activity之间通过Intent通信 。
Android的每一个活动必须在AndroidMainfest.xml中声明,否则系统不识别,也不执行。
4.服务:是应用程序组件,不提供任何界面,始终在后台运行,用户不能干预。
5.内容提供者:存储和检索数据,使数据可访问;允许应用查询/修改或共享数据,但是应用必须从内容提供者处获取权限。
6.广播接收器:不提供 UI,可创建状态栏通知,当出现广播事件时提醒用户。
1.3.2 安卓项目结构
1.每个 Android 应用在其根目录中都应具有 AndroidManifest.xml 文件。
此文件为 Android 系统提供应用相关的信息,此信息对于 Android 系统执行应用必不可少。
2.Android项目目录 src, gen, bin, res. Androidmanifest.xml
1.3.3 XML可扩展标记语言
概念:XML以标准的层次结构方式描述数据的结构。
目的:存储数据和跨平台交换数据。
1.3.4 如何选择下载不同版本的安卓SDK文档学习?
ADT→ sdk文件夹→ index.html→ Develop→ Reference
1.4.1 MyFirstApp
1.关于新建项目:
2.关于工作集:
3.关于虚拟机:
4.如何让app在不同的虚拟机上运行?