做者:泥沙砖瓦浆木匠
我的签名:打算起手不凡写出鸿篇巨做的人,每每坚持不了完成第一章节。 html
若是个人帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ java
点这参与众筹 个人支付宝:13958686678 android
泥瓦匠又和你们见面了,在移动平台干过原生态开发,也干过hybrid应用。能够看看相关的文章 Android UI 。因此多多少少在这块仍是有点了解。如今不少高级语言能够开发app程序,包括Android,到我以为目前Java语言开发Android程序仍是很火,很重要的。天然,Java的底子不可少。能够看看泥瓦匠写的很多基础 Java Basic 。 程序员
咱们生活在一个通信的时代,我经历过得2.5G时代,也就是GPRS等的时代,前面还有2G(GSM等)、1G,后面则你们熟悉的3G 4G的时代,明显的显示是下载速度的变化。Android则是一个这个时代通信的平台系统。天然其中包括Android源自于PC系统的基础,其功能包括所谓的内核系统、网络、文件、2D、3D图形、数据库等。其中里面咱们常常会使用其中的功能,他们组成了安卓(Andriod)。 数据库
本文提纲以下: 小程序
1.2 浅析Android架构 网络
1.3 HelloWord的工程结构(★★★☆☆) 架构
1.4 编译中学习(★★★★☆) app
1.5 总结 框架
Android其实也不难,泥瓦匠总是会说一些不大不小的话。可是我感受仍是有点道理,好比Android是技术,技术来源于生活。因此咱们要学会学着把技术还原到生活中,这样其实咱们就知道其起源,其原理。对了咱们还能够类比,好比
咱们彻底能够把Android看成一个地球(叫作安卓地球)。
问: 安卓地球为何会自转,会公转?(谁驱动)
答曰:安卓地球自转工做来自太阳对它的做用。天然同理可得:Android也有属于它的一套驱动系统,它叫作Linux内核(Linux Kernel),里面包括着各类底层的驱动(蓝牙 USB WiFi等)和一些像对电源的管理。而后咱们之后的一切操做都是基于这个基石搭建的。
二问:安卓地球上为何有海,陆地和空气?(拥有什么)
答曰:安卓地球里面拥有不少主要功能的实现。Android有一套库(library),好比咱们常见存储数据操做的SQLite库,提供了数据库和对数据的操做。还有WebKit库位浏览Web提供支持。还有不少,我后面用图总结。另外这里同一层的有一个核心库和虚拟机(Dalvik),叫做Android运行时。这词虽然有点拗口,可是泥瓦匠会给你解释解释。下面咱们也会详细介绍。
三问:安卓地球上的(码)农民能种田,(码)渔民能捕鱼。这是地球对使用者的帮助。
答曰:安卓地球公开了其操做系统的各类功能,使他们能开发应用程序时用这些功能。咱们把它叫作应用框架(Application Framework)。
最后问:那些安卓地球上吃饭,泡脚的人享受着的生活。这是看得见摸得着的。那是安卓地球在应用程序使用层上,也就是咱们常常提起的应用程序。称为应用程序(Application)。
泥瓦匠的记忆宫殿:我以为好记性不如烂笔头,好笔头不如来画个图。因此我总结学习须要方法,学习须要思路。下面我给出的是Android架构浅析的总结图:
跟着泥瓦匠动手吧,扯了一下架构。以为‘纸上学来总觉浅绝知此事要躬行’。说干就干吧。首先码农程序员最熟悉的Hello World的爱人了解透彻,别看这个小程序,其实学问很大。细节注意每每是一我的的转折点哦。
elicpse → 右键 new android application → next.. → finish
图中,红色框框中是咱们要了解的知识。由于如今Android版本2.3开始造成了新的里程碑,因此咱们须要在兼容方面,也就是图中Mininum Require SDK 和 Target SDK 的设置。下面是Compile With,由于这要懂得下Dalvik VM,由于咱们知道不一样版本的编译下会有点不一样的区别。或是修改或是新增。DalvikVM 和 JVM到底有什么区别呢?区别不大,但效果很大。为什么呢?
由于,在PC端JVM 一般咱们javac 而后 .java文件到 .class及其打包下的 .jar。他们是基于堆栈架构,DVM呢?DVM其实也是到字节文件那块而已。有什么不一样呢?
答案在这里:DVM(dalvik vm)基于寄存器架构,其过程是: .java → javac → .class → dx.bat → .dex → .odex化。而odex化 把文件预先提取出来做用 加快软件加载速度和开机速度。大大使咱们在Android系统上,操做以为方便流畅。而后大家会发现旁边多了一个工程目录,这是咱们要讲的重点:
下面咱们来看看这工程的含义,其中难点我也会标注:
你们和瓦匠想的同样,很想跑起来试试,那就跑呗:右键项目 → run as Android application 便可。
其中补充下,项目中一个重要文件:清单文件 AndroidManifest.xml,其内容以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
package="org.nsg.main"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="org.nsg.main.HelloActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
|
其中定义了版本代码,应用运行所需的操做系统版本,还有些基础的logo,名称等配置。值得泥瓦匠一说的是,在activity元素里面有个元素<intent-filter>的,它的做用:
一、意图筛选器名称android.intent.action.MAIN,代表应用入口点。
二、意图筛选器类别android.intent.category.LAUNCHER,代表应用从设备启动器图标启动。
泥瓦匠,怎么说编译中学习,咱们须要学习什么呢?
答曰:编译中学习,编译工程的变化,及DVM的一些特征。
当咱们右键 run 的时候,你们会发现工程目录下的bin文件夹会发生变化,如图所示:
这些都是什么呢?让咱们意义认识他们吧。
为何说DVM很支持或者很适合在移动终端使用呢。其中不少有趣的特性分析给你们:
一、dex文件把全部编译后的文件整到一块儿,健身了文件的尺寸和IO操做,也提升了类的查找。
二、基于寄存器,代码执行效率高。
其余也有不少,你们能够去找这方面的DVM知识。
Android第一篇我以为是否是讲的太多了,无论了,反正泥瓦匠都认为应该知道的东西。别见怪哦~
仍是那句话,泥瓦匠想说:
如以上文章或连接对你有帮助的话,别忘了在文章按钮或到页面右下角点击 “赞一个” 按钮哦。你也能够点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章