一、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更加方便易用,运行速度也较快。
    Pasted image 20250920204359

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
    Pasted image 20250920215443

1.3.2 创建内置模拟器

所谓模拟器,是指在电脑上构造一个演示窗口,模拟手机屏幕上的APP演示效果
Pasted image 20250920215737

  1. 在Android studio中右边侧栏device manager中add a new device –> create virtual device 。
  2. 选择合适的模拟机型,这里我选择pixel 2,然后选择模拟器上运行的android版本,这里我选Android11,下载并finish即可。
    Pasted image 20250920221522

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开发的特点

  1. app运行的环境

    • 虚拟机上运行各个参数不同的安卓设备
    • 真机上运行
  2. 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书写的文本控件:
  3. 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工程目录结构

  1. 目录结构
  • App工程分为两个层次,第一个层次是项目,另一个层次是模块。
  • 模块依附于项目,每个项目至少有一个模块,也能拥有多个模块。
  • 一般所言的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。
  1. 目录说明
  • App项目下面有两个分类:app(代表app模块)、GradleScripts。
    app下面有3个子目录
    Pasted image 20250921201708
    (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
的本地路径等。

  1. Gradle是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的
    差异管理等工作。

  2. 编译配置文件build.gradle

  • 项目级别的build.gradle指定了当前项目的总体编译规则。
  • 模块级别的build.gradle对应于具体模块,每个模块都有自己的build.gradle,它指定了当前模块的详细编译规则。