第一章 开始启程 你的第一行Android代码
1.1 Android简介
Android系统架构:
1.Linux内核层:
android系统基于linux内核,这一层为Android设备的各种硬件提供底层驱动,如显示驱动、音频驱动蓝牙驱动等。
2.系统运行库层:
这一层通过一些C/C++库来为android系统提供主要特性支持。
系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。
这一层还有android运行时库。
Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库。后者使得每一个android应用都能运行在独立的进程当中,并拥有一个自己的Dalvik虚拟机实例。
3.应用框架层:
该层是Android应用开发的基础,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。
4.应用层:
该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。
Android应用开发特色
四大组件
活动【Activity】:应用程序的门面,凡是在应用中你能看到的东西都放在活动里。
服务【Service】:在后台运行,即便用户退出了应用,服务仍然可以继续运行。
广播接收器【Broadcast】:允许你的应用接受来自各处的广播信息,比如电话、短信等。
内容提供器【Content Provider】:为应用程序之间共享数据提供了可能,比如你想读取电话簿中的联系人,就需要通过内容提供器来实现。
丰富的系统控件
SQLite数据库
轻量级、运算速度极快的嵌入式关系型数据库。
强大的多媒体
地理位置定位
1.2 搭建开发环境
准备所需工具
JDK:JAVA语言开发工具包,包含了JAVA的运行环境、工具集合、基础类库等内容。
AndroidSDK:谷歌提供的Android开发工具包,需要引用该包来使用Android的相关API。
Android Stutio:开发IDE
集成下载地址:https://developer.android.google.cn/studio/index.html
你下载下来的是一个安装包,跟着一步步安装即可。
1.3 创建第一个android项目
在Android Studio界面点击【Start a new Android Studio project】会打开一个创建新项目的界面;
Name就是应用名称;
packageName表示项目包名,Android系统就是通过包名来区分不同应用程序的,因此需要具有唯一性。(如果你不喜欢系统自动生成的可以编辑修改)
启动模拟器
运行在打开的模拟器上
项目结构模式
真实模式:project
app:存放项目代码、资源等内容
build.gradle:项目的gradel构建脚本
gradlew和gradlew.bat:用来在命令行界面执行gradle命令(gradlew是linux和Mac系统使用,gradlew.bat是windows系统使用)。
local.properties:指定Android SDK路径,除非有变更,否则不需要更改。
App目录下的结构
build:和外层类似,主要是一些编译时生成的文件。
libs:第三方jar包存放目录,放在这个目录下的jar包都会被自动添加到构建路径中去
androidTest:用来编译测试用例,可以对项目进行一些自动化测试。
java:存放java代码。
res:资源目录。
AndroidManifest.xml:整个adnroid项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
详解项目中的资源
res目录下所有以mipmap开头的文件夹都是用来放应用图标的。
如果想引用一个strings.xml中的内容,比如定义了应用名称【app_name】的字符串【HelloWord】,有两种方法:
1、在代码中通过R.string.app_name可以获得该字符串的引用;
2、在XML中通过@string/app_name可以获得该字符串的引用。
上面两种方法中,string是可以替换的,如果图片资源就drawable、如果应用图标就mipmap,如果引用布局就换成layout。
比如【AndroidManifest.xml】中,应用图标通过【android:icon】属性定义,应用名称则通过【android:label】属性指定。