初识Android

一、Android是什么?


Android是世界上最受欢迎的移动操作系统,使用于手机,手表,平板电脑,电视等数十亿设备

  • Android是一种基于Linux的开源的操作系统
  • 主要使用于移动智能设备,如智能手机、平板电脑和智能电视等

二、Android发展历程


  • 2003年,Android操作系统由Andy Rubin的Android公司开始开发
  • 2005年,Google收购Android公司
  • 2007年,Android开源
  • 2008年,Android1.0版本发布,第一部Android手机HTC T-Mobile G1问世
  • 2011年第一季度, Android在全球的市场份额首次超过塞班系统,跃居全
    球第一
  • 2013年的第四季度, Android平台手机的全球市场份额已经达到78.1%
T-Mobile G1.jpg

三、Android特点


Android是一种基于Linux的自由及开放源代码的操作系统。

所以Android最大的特点就是开源、免费、可定制
开源免费是一把双刃剑,吸引了众多开发者进入Android开发领域,促进了Android的快速发展;但同时也带来了一个很严重的问题:碎片化

碎片化包括:屏幕碎片化、系统碎片化,我们开发时要考虑到碎片化的问题进行适配,以后再仔细探究这一块。

四、Android各版本对应API级别


1

五、Android平台架构


android-stack_2x.png-99.2kB
android-stack_2x.png-99.2kB
  • Linux 内核层
    Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。
    使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序

  • 硬件抽象层 (HAL)
    硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

  • Android Runtime
    对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。
    ART 的部分主要功能包括:

    • 预先 (AOT) 和即时 (JIT) 编译
    • 优化的垃圾回收 (GC)
    • 更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置监视点以监控特定字段

    在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。

  • 原生 C/C++ 库
    许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。
    如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。

  • Java API 框架
    您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

    • 丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
    • 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
    • 通知管理器,可让所有应用在状态栏中显示自定义提醒
    • Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
    • 内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据

    开发者可以完全访问 Android 系统应用使用的框架 API。

  • 系统应用
    Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。
    系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。
    我们的Android应用开发,暂时就是在这一层

六、Android与iOS操作系统对比


图片.png-93.6kB
图片.png-93.6kB

七、Android运行环境,DVM和JVM


通过上面的Android平台架构可知:5.0之前,Android的运行环境是DVM;5.0及更高版本是ART。

DVM,Dalvik Virtual Machine,是专门针对移动设备定制的,它针对内存、CPU有限等情况进行了优化,它使得每一个Android应用都运行在独立的进程中,并且有自己的一个Dalvik实例。
Dalvik是运行时编译,ART时安装时编译,后面运行时就不用编译了

JVM,Java Virtual Machine,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体结构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。

DVM 和 JVM 的区别:

Image.png-4.6kB
Image.png-4.6kB

.apk 和 .jar 的区别:

图片.png-138.2kB
图片.png-138.2kB

八、Android项目结构


Image [2].png-33.8kB
Image [2].png-33.8kB
图片.png-22kB
图片.png-22kB
图片.png-24.1kB
图片.png-24.1kB

九、Apk的构成及Apk打包流程


Apk本质是个压缩包,通过更改后缀为.zip之后解压,可发现它的构成如下:

Apk打包流程:

1、打包资源文件,生成R.java文件
2、处理aidl文件,生成相应java 文件
3、编译工程源代码,生成相应class 文件
4、转换所有class文件,生成classes.dex文件
5、打包生成apk
6、对apk文件进行签名
7、对签名后的apk文件进行处理

十、Android SDK目录结构说明


图片.png-5.4kB
图片.png-5.4kB

add-ons:Google API 。比如GoogleMaps
build-tools:各版本编译工具目录
docs:Android的文档,包括开发指南、API等
extras:扩展开发包 如高版本的API在低版本中开发使用
platforms :各版本SDK
platform-tools:各版本SDK通用工具。比如adb、和aapt、aidl、dx等文件
sources:各版本SDK源码
system-images:模拟器映像文件。从android-14开始将模拟器映像文件整理在这里(原来放在platforms下)
temp:临时文件夹,一般在SDK更新安装时用到
tools :各版本SDK自带工具
AVD Manager:Android手机模拟配置工具,用于配置模拟器,只有先配置AVD才可运行模拟器
SDK Manager:SDK管理器,用于SDK更新、下载、删除

十一、Android Log日志工具类


  • Log提供了多个级别的打印输出方法, 在LogCat窗口中显示的颜色不同
  • Log打印时必须指定TAG, 在LogCat中可以通过添加TAG过滤查看
  • LogCat中可以通过两种方式过滤:
    • TAG名: 显示所有此标签名的输出
    • 应用包名: 显示指定包名应用的所有输出

我的Log颜色设置:

级别 颜色
VERBOSE BBBBBB
DEBUG 0070BB
INFO 48BB31
WARN BBBB23
ERROR FF0006
ASSERT 8F0005

十二、Android开发中尺寸相关概念


1. 常见尺寸概念

  • 屏幕尺寸

    • 含义:手机对角线的物理尺寸
    • 单位:英寸(inch),一英寸大约2.54cm,常见的尺寸有4.7寸、5寸、5.5寸、6寸
  • 屏幕分辨率

    • 含义:手机在横向、纵向上的像素点数总和, 一般描述成 宽*高,即横向像素点个数 * 纵向像素点个数(如1080 x 1920 px)
    • 单位:px
  • px

    • 含义:pixel,电子屏幕上组成一幅图画或照片的最基本单元
  • pt

    • 含义:point,点,印刷行业常用单位,等于1/72英寸
  • dpi
    • 含义:dot per inch,最初用于衡量打印物上每英寸的点数密度,就是说你的打印机可以在一英寸内打多少个点。该值越高,则图片越细腻
  • ppi

    • 含义:当DPI的概念用在计算机屏幕上时,就应称之为PPI(Pixels Per Inch)。同理: PPI就是计算机屏幕上每英寸可以显示的像素点的数量,该值越高,则屏幕越细腻
  • dp

    • 含义:Density-independent pixel, 是安卓开发用的长度单位,1dp表示在屏幕像素点密度为160ppi时1px长度
  • sp

    • 含义:scale-independent pixel,安卓开发用的字体大小单位。可以根据用户的字体大小首选项进行缩放

注意: Android在运行时会自动将dp、sp为单位的尺寸转换为像素单位的值

2. 换算关系

  • pt 和 px
    1pt= 1/72 in = (dpi / 72) px

    当photoshop中新建画布的分辨率为72ppi( 即 72dpi时 ), 1pt=1px; 当新建画布分辨率为72*2=144ppi时,1pt=2px

  • ppi 和 dpi
    ppi= 屏幕对角线上的像素点数/对角线长度 = √(屏幕横向像素点^2 + 屏幕纵向像素点^2)/对角线长度

    在电子屏幕显示中提到的ppi和dpi,在我们android开发中可认为是一样的

  • dp 和 px
    1dp=(ppi/ 160)px

    图片.png-8.5kB
    图片.png-8.5kB

3. 像素密度划分

mdpi、hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。

那么如何区分呢?Google官方指定按照下列标准进行区分:


图片.png-5.1kB
图片.png-5.1kB

4. 标准尺寸

图片.png-166.6kB
图片.png-166.6kB

十三、Android开发中颜色相关概念


Android中支持以下颜色形式:

  • RGB 低精度 - 不带透明通道(默认)

  • ARGB 低精度 - 带透明通道

  • RRGGBB 高精度 - 不带透明通道

  • AARRGGBB 高精度 - 带透明通道

类型 解释 0(0x00) 255(0xff)
A(Alpha) 透明度 透明 不透明
R(Red) 红色 无色 红色
G(Green) 绿色 无色 绿色
B(Blue) 蓝色 无色 蓝色

其中 A R G B 的取值范围均为0255(即16进制的0x000xff)

A 从ox00到oxff表示从透明到不透明。

RGB 从0x00到0xff表示颜色从浅到深。

当RGB全取最小值(0或0x000000)时颜色为黑色,全取最大值(255或0xffffff)时颜色为白色


个人总结,水平有限,如果有错误,希望大家能给留言指正!如果对您有所帮助,可以帮忙点个赞!如果转载,希望可以留言告知并在显著位置保留草帽团长的署名和标明文章出处!最后,非常感谢您的阅读!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,050评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,650评论 2 59
  • 1、什么是Android Andy Rubin等人于2003年创办的一家名为Android的公司,在2005年谷歌...
    junerver阅读 505评论 0 3
  • 我的父亲是个典型的中国式农民,同时也是一个标准的“退休""代课"教师。在我看来,父亲是很不幸的。对于自己的一生,...
    看斜阳阅读 592评论 0 0
  • 这是一篇晚点的影评。 《乘风破浪》是2月14日,情人节那天看的。 整个观影体验很不错,一路笑料不断,看完后,也跟朋...
    彩蝶百合阅读 713评论 0 2