android学习笔记
一、Android开发环境搭建
1.1Android开发简介
1.1.1Android发展历程
安卓(Android)是一种==基于Linux内核==的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。Android操作系统最初由AndyRubin开发,主要支持手机。
- 2005年8月由Google收购注资。
- 2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统,并发布了Android的源代码。
- 第一部Android智能手机发布于2008年10月,由HTC公司制造。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表、车载大屏、智能家居等,并逐渐成为了人们日常生活中不可或缺的系统软件。
- 2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
- 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
- 2019年,谷歌官方宣布全世界有25亿活跃的Android设备,还不包含大多数中国设备。
表1-1 Android主要版本发布时间
| Android版本号 | 对应API | 发布时间 |
|---|---|---|
| Android 13 | 33 | 2022年2月 |
| Android 12 | 31 | 2021年10月 |
| Android 11 | 30 | 2020年9月 |
| Android 10 | 29 | 2019年8月 |
| Android 9 | 28 | 2018年8月 |
| Android 8 | 26/27 | 2017年8月 |
| Android 7 | 24/25 | 2016年8月 |
| Android 6 | 23 | 2015年9月 |
| Android 5 | 21/22 | 2014年6月 |
| Android 4.4 | 19/20 | 2013年9月 |
1.1.2 Android Studio发展历程
- AndroidStudio是Android应用的开发工具,由谷歌公司在2013年5月推出,Android Studio基于IntelliJ IDEA演变而来,比Eclipse更加方便易用,运行速度也较快。

1.2 搭建Android Studio开发环境
1.2.1 开发机配置要求
- 硬件要求
- 内存要求至少8GB,越大越好。
- CPU要求1.5GHz以上,越快越好。
- 硬盘要求系统盘剩余空间10GB以上,越大越好
- 要求带无线网卡与USB插槽。
- 对操作系统要求(以Windows为例)
- 必须是64位系统,不能是32位系统。
- 至少为Windows7,不支持Windows XP。
1.2.2 Android SDK
- SDK全称为Software Development Kit,意即软件开发工具包,它可将App源码编译为可执行的 App应用。
1.3 创建并编译App工程
1.3.1 Android Studio 2025创建工程项目(基于java语言)
- new project
- 选择noActivity的空白模板,然后在弹出的窗口中language项中选择Java和所需的最小SDK(这里我选择API28),点击finish创建项目
- 在项目住路径下new一个emptyViewActivity

1.3.2 创建内置模拟器
所谓模拟器,是指在电脑上构造一个演示窗口,模拟手机屏幕上的APP演示效果
- 在Android studio中右边侧栏device manager中add a new device –> create virtual device 。
- 选择合适的模拟机型,这里我选择pixel 2,然后选择模拟器上运行的android版本,这里我选Android11,下载并finish即可。

1.3.3 编译发布到虚拟机
点击Android Studio中run按钮会自动编译并安装到已经启动的虚拟机上
1.4 观察app运行日志
Android采用Log工具打印日志,它将各类日志划分为五个等级:
- Log.e:(error)表示错误信息,比如可能导致程序崩溃的异常。
- Log.w:(warning)表示警告信息。
- Log.i:(info)表示一般消息。
- Log.d:(debug)表示调试信息,可把程序运行时的变量值打印出来,方便跟踪调试。
- Log.v:(verbose)表示冗余信息。
二、android开发基础
2.1 Android开发的特点
app运行的环境
- 虚拟机上运行各个参数不同的安卓设备
- 真机上运行
app开发的语言
- Java和Kotlin
- c/c++
不管是ava还是Kotlin,它们都属于解释型语言,这类语言在运行之时才将程序翻译成机器语言,故而执行效率偏低。虽然现在手机配置越来越高,大多数场景的App运行都很流畅,但是涉及图像与音视频处理等复杂运算的场合,解释型语言的性能瓶颈便暴露出来。
编译型语言在首次编译时就将代码编译为机器语言,后续运行无须重新编译,直接使用之前的编译文件即可,因此执行效率比解释型语言高。C/C+正是编译型语言的代表,它能够有效弥补解释型语言的性能缺憾,借助于JNI技术(avaNativeInterface,即Java原生接口),Java代码允许调用C/C++编写的程序。事实上,Android的sDK开发包内部定义了许多JNI接口,包括图像读写在内的底层代码均由C/C++编写,再由外部通过封装好的Java方法调用。
不过Android系统的JNI编程属于高级开发内容,初学者无须关注JNI开发,也不要求掌握C/C++ - xml
XML全称ExtensibleMarkupLanguage,即可扩展标记语言,严格地说,XML并非编程语言,只是一种标记语言。它类似于HTML,利用各种标签表达页面元素,以及各元素之间的层级关系及其排列组合。每个XML标签都是独立的控件对象,标签内部的属性
以“android:“打头,表示这是标准的安卓属性,各属性分别代表控件的某种规格。比如下面是以XML书写的文本控件:
app连接的数据库
在学习Java编程的时候,基本会学到数据库操作,通过IDBC连接数据库进行记录的增删改查,这个数据库可能是MySQL,也可能是Oracle,还可能是SQLServer。然而手机应用不能直接操作上述几种数据库,因为数据库软件也得像应用软件那样安装到操作系统上,比如MySQL提供了Windows系统的安装包,也提供了Linux系统的安装包,可是它没有提供Android系统的安装包呢,所以MySQL没法在Android系统上安装,手机里面的App也就不能直连MySQL。既然MySQL、Oracle这些企业数据库无法在手机安装,那么App怎样管理业务方面的数据记录呢?其实Android早已内置了专门的数据库名为SQLite,它遵循关系数据库的设计理念,SQL语法类似于MySQL。不同之处在于,SQLite无须单独安装,因为它内嵌到应用进程当中,所以App无须配置连接信息,即可直接对其增删改查。由于SQLite嵌入到应用程序,省去了配置数据库服务器的开销,因此它又被归类为嵌入式数据库。
可是SQLite的数据库文件保存在手机上,开发者拿不到用户的手机,又该如何获取App存储的业务数据?比如用户的注册信息、用户的购物记录,等等。如果像JavaWeb那样,业务数据统一保存在后端的数据库服务器,开发者只要登录数据库服务器,就能方便地查询导出需要的记录信息。
手机端的App,连同程序代码及其内置的嵌入式数据库,其实是个又独立又完整的程序实体,它只负责手机上的用户交互与信息处理,该实体被称作客户端。而后端的JavaWeb服务,包括Web代码和数据库服务器,同样构成另一个单独运行的程序实体,它只负责后台的业务逻辑与数据库操作,该实体被称作服务端。客户端与服务端之前通过HTTP接口通信,每当客户端觉得需要把信息发给服务端,或者需要从服务端获取信息时,客户端便向服务端发起HTTP请求,服务端收到客户端的请求之后,根据规则完成数据处理,并将处理结果返回给客户端。这样客户端经由HTTP接口并借服务端之手,方能间接读写后端的数据库服务器(如MySQL)。
2.2 Android工程目录结构
- 目录结构
- App工程分为两个层次,第一个层次是项目,另一个层次是模块。
- 模块依附于项目,每个项目至少有一个模块,也能拥有多个模块。
- 一般所言的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。
- 目录说明
- App项目下面有两个分类:app(代表app模块)、GradleScripts。
app下面有3个子目录:
(1)manifests:子目录下只有一个AndroidManifest.xml,是app运行的配置文件
(2)java:子目录下面有3个com.example.myapp包,其中第一个包存放当前模块的java源代码,后面两个包存放测试用的java代码。
(3)res:子目录下存放当前app的资源文件,且还有4个子目录: - drawable目录存放图形描述文件与图片文件。
- layout目录存放App页面的布局文件。
- mipmap目录存放App的启动图标。
- values目录存放一些常量定义文件,例如字符串常量strings.xml、像素常量dimens.xml、颜色常量colors.xml、样式风格定义styles.xml等。
GradleScripts下面主要是工程的编译配置文件:
(1)build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则。
(2)proguard-rules.pro,该文件用于描述java代码的混淆规则。
(3)gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动。
(4)settings.gradle,该文件配置了需要编译哪些模块。初始内容为include’app’’,表示只编译app模块。
(5)local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK
的本地路径等。
Gradle是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的
差异管理等工作。编译配置文件build.gradle
- 项目级别的build.gradle指定了当前项目的总体编译规则。
- 模块级别的build.gradle对应于具体模块,每个模块都有自己的build.gradle,它指定了当前模块的详细编译规则。