前言

什么是 Android

  Android 是一个基于 Linux 内核的开源移动操作系统,主要用于智能手机和平板电脑。它由 Google 领导的开源项目 Android Open Source Project (AOSP) 维护。


一、Android 简介

1. 了解 Android 平台

  Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源移动操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。

2. Android 优势

  • 开源:Android 是开源的,允许开发者自由定制和扩展。
  • 广泛的用户基础:全球数十亿设备运行 Android。
  • 丰富的生态系统:大量的库、框架和工具支持开发。
  • 多设备支持:不仅限于手机,还支持智能手表、电视、汽车等。

3. Android 体系架构

  Android系统构架是安卓系统的体系结构,android的系统架构和其操作系统一样,采用了分层的架构,共分为四层,从高到低分别是Android应用层,Android应用框架层,Android系统运行库层和Linux内核层。

Andriod体系架构

二、基础知识

1. 编程语言

  1. Java:传统的 Android 开发语言,拥有丰富的资源和社区支持。
  2. Kotlin:现代编程语言,官方推荐用于 Android 开发,具有简洁和安全的特性。

2. 基础知识

  1. 面向对象编程 (OOP):理解类、对象、继承、多态等概念。
  2. XML:用于定义 Android 应用的用户界面布局。

3. 四大组件

Android四大基本组件分别是

  1. Activity 简单的可以认为看到的一个屏幕的内容就是一个Activity
  2. Service服务 有些应用不一定有界面, 或者在界面之外要还能运行, 例如音乐播放器, 这时候就需要用到Service
  3. Content Provider内容提供者 Android的数据操作基本都基于这个
  4. BroadcastReceiver广播接收器

4. 基本UI组件

API 过期

TabActivity 在4.0 过时, 被Fragement替换

  1. Notification 通知组件
  2. Fragment 组件 分页组件 --【当前重点学习-用于项目开始的布局】
  3. Gallery组件 拖动组件
  4. RadioButton组件 单选按钮

5. 五大布局

  1. LinearLayout 线性布局, 使用的比较多的布局
  2. FrameLayout 帧布局, 类似动画一帧一帧的那种(用于Fragment的容器)
  3. RelativeLayout 相对布局
  4. AbsoluteLayout 绝对布局(不推荐使用, 在不同型号的终端上显示可能不同)
  5. TableLayout 表格布局

6. 开发 Android 应用流程

FinClip Android 工程师梳理了从零开始如何开发一个App,对于新手开发者特别有帮助,大家可以收藏起来。

与开发 iOS 应用的逻辑基本一致,开发 Android 应用也需要以下 5 步:

①开发工具安装和配置;
②搭建开发环境;
③在 Android Studio 中,创建第一个项目;
④完成简单 Hello world 代码编写;
⑤编译 APK 文件,让应用在手机上跑起来。

三、搭建开发环境

1. 安装 Android Studio

1. Android Studio开发环境的下载

Android Studio 是谷歌官方推荐的 Android 开发集成开发环境 (IDE),可以从官网和中文社区中下载 :

下载

2. Android Studio开发环境的安装

  • 下载成功后打开软件包,单击android-studio.exe,按照安装向导的指示进行安装。
  • 安装过程中可以选择安装 Android SDK、Android 虚拟设备 (AVD) 等组件。

安装

3. Android Studio界面

单击启动Android Studio开发环境,进入开发环境界面,Android Studio开发环境主要包括工作环境、项目视图、透视图等。

  • 工作空间(Workspace):工作空间绑定了一个目录作为默认的工作路径,所有在该工作空间新建的项目和文件,默认均保存在该目录下,所有用户的定制选择也保存在这个目录下。

  • 项目(Project):项目是我吗进行开发的工作对象,在一个工作空间中,可以创建多个项目。

  • 透视图(Perspective):透视图定义了工作台上的一组视图(Views)、编辑器的初始集合和布局显示。

3. 配置环境变量(可选)

为了在命令行中使用 Android SDK 工具,可以配置环境变量。

2. JDk

1. 下载

  • 进入Oracle公司的主界面:官方网站,选择“Downloads”页面中的“Java for Developer”。
  • 下载并安装JDK。

2. 配置 Android SDK

打开 Android Studio,进入`SDK Manager`。
选择合适的 SDK 版本进行安装。
安装必要的工具,如 Android SDK Platform-Tools 和 Android SDK Build-Tools。

3. AVD模拟器

AVD的全称是Android Virtual Device,是Android开发中的一种虚拟设备,通常用于在开发、测试、调试Android应用时使用。

1.创建AVD模拟器

  • 在菜单栏中选择“Tools工具”→“Android AVD Manager”命令进入安卓虚拟设备管理界面。

选择设备

  • 在“系统镜像”栏中,为新建的安卓虚拟设备合适的版本。

系统镜像

2.运行AVD模拟器

  • 创建安卓虚拟设备后,在模拟器列表中运行模拟器;运行创建的“pixel 6”虚拟设备
    在这里插入图片描述

在这里插入图片描述

到此成功完成了Android Studio开发环境的搭建,接下来可以进行项目的开发了。

四、项目实践

1. 创建第一个 Android 应用

创建一个新项目

开始设置新项目,包括项目的名称、应用包名称、项目位置等信息。

选择要在项目中包含的组件,例如Activity、Fragment等。

配置应用的启动Activity。

  • 打开 Android Studio,点击 Start a new Android Studio project。在Android Studio中选择File -> New -> New Project来打开"Create New Project"窗口。
  • 选择 Empty Activity,点击 Next。
  • 配置项目名称、包名、保存路径、语言(选择 Java 或 Kotlin)和最低 SDK 版本。
  • 点击 Finish,等待项目创建完成。

项目结构

app/src/main/java/...:Java 或 Kotlin 代码。
app/src/main/res/layout/...:布局文件(XML)。
app/src/main/AndroidManifest.xml:应用的配置文件。

编写代码

在 MainActivity 中编写逻辑代码。
在 activity_main.xml 中设计用户界面。

运行应用

连接 Android 设备或启动 Android 虚拟设备 (AVD)。
点击 Run 按钮,选择目标设备,应用将被编译并安装到设备上。
  1. 深入学习 Android 组件
    Activity

    代表一个用户界面屏幕。
    生命周期管理:onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()。

Service

在后台执行长时间运行的操作。
两种类型:Started 和 Bound。

Broadcast Receiver

接收和处理广播消息。
例如,电池电量变化、网络状态变化等。

Content Provider

管理应用之间的数据共享。
提供数据访问接口。
  1. 使用 Android Studio 工具
    Layout Editor

    可视化设计用户界面。
    支持拖放组件和属性编辑。

Logcat

查看应用日志和调试信息。
过滤不同级别的日志输出。

Device Manager

管理虚拟设备 (AVD) 和连接的物理设备。
启动、停止和配置设备。

Debugger

设置断点、单步执行代码。
查看变量值和调用堆栈。
  1. 调试与测试
    调试技巧

    使用断点调试代码。
    查看 Logcat 日志。
    使用调试器查看变量和内存状态。

测试

单元测试:测试单个函数或模块。
UI 测试:使用 Espresso 或 UI Automator 进行用户界面测试。
集成测试:测试多个组件之间的交互。

模拟器与真机测试

使用 Android 虚拟设备 (AVD) 进行模拟器测试。
在真实设备上进行真机测试,确保兼容性和性能。
  1. 发布应用
    准备发布

    签名应用:使用 keystore 文件对应用进行签名。
    版本管理:设置版本号和版本名称。
    优化应用:减少 APK 大小,优化性能。

发布到 Google Play

创建 Google Play 开发者账号。
创建应用条目。
上传 APK 或 App Bundle。
填写应用信息:描述、截图、图标等。
设置定价和分发。
提交审核。

维护与更新

监控应用性能和使用情况。
修复 bug 和优化功能。
发布更新版本。
  1. 学习资源

官方文档

Android Developers:官方文档和教程。

在线课程

Udacity Android 开发课程
Coursera Android 开发课程

书籍

《Android 编程权威指南》
《Kotlin 编程:Android 开发实战》

社区与论坛

Stack Overflow Android 标签
Reddit Android 开发者社区

五、APK 文件结构

Android 应用的安装包时 以 " .apk " 为后缀的 APK 文件 ;

APK 是 " Android Package " 的缩写 ;

将打包好的 APK 文件安装到 Android 手机中 , 就是可运行的应用程序 ;

① assets : 资源文件 , 该目录下的资源文件不经过 aapt 工具编译 ;

② lib : 存放 动态库 “.so” 文件 , NDK 中 C / C++ 调用的函数库 ;

③ META-INF : 该目录中存放 apk 的签名文件 ;

  • CERT.SF : 摘要加密 , 使用私钥 对 摘要明文 加密后的 密文信息 , 是加密文件 , 如果要解密该文件 , 必须使用与私钥配对的公钥进行解密 ;
  • CERT.RSA : 文件是签名证书文件 , 存放的是公钥和加密算法的描述 ;
  • MANIFEST.MF : 文件摘要 , 存放程序清单文件 , 包含了 APK 安装包 中所有文件的 摘要明文 ;
  • 剩余文件 : 都是可忽略的资源文件 ;

META-INF

④ res : 资源文件 , 经过了 aapt 工具编译后的文件 ; 这个目录下的文件不再介绍 , 太熟悉了 ;

⑤ AndroidManifest.xml : 清单文件 , 声明了 Application , 组件 , 权限 , 元数据 等信息 ;

⑥ classes.dex : Dalvik 字节码文件 , Android 中的可执行文件 , 可以在 Android 系统中运行 ;

⑦ resources.arsc : 资源文件映射表 , 使用 aapt 编译 res 目录下的资源文件形成的文件 , 用于根据 id 查找资源路径 ;

六、APK 打包流程

① 使用 AAPT 工具打包资源文件 , 生成 R.java , resources.ap 文件 ;

② 使用 AIDL tool 工具 , 处理 AIDL 文件 , 生成对应的 Java 文件 ;

③ 使用 javac 工具编译 Java 源码为 class 字节码文件 ;

④ 使用 dx 工具将 class 字节码文件打包成 dex 字节码文件 , 这是 Dalvik 虚拟机字节码文件 ;

⑤ 使用 apkbuilder 工具生成未签名的 apk 文件 ;

⑥ 使用 jarsigner 工具对 apk 文件进行签名 , 生成签名后的文件 ;

⑦ 使用 zipalign 工具对签名后的 apk 文件进行对齐操作 ;

APK 打包流程

七、APK 安装流程

  1. 4 种安装方式 :

① 系统程序安装 ;

② 使用应用市场安装 ;

③ 手机自带安装 ;

④ 使用 ADB 调试工具安装 ;

  1. APK 安装流程 :

① 将 APK 安装包复制到 /data/app 目录下解压 , 扫描安装包 ;

② 将 dex 文件保存 /data/dalvik-cache 目录中 ;

③ 在 /data/data/包名 下创建对应 apk 包名的应用数据目录 ;

系统自带程序在 /system/app 目录下 , 获得 adb root 权限后才能删除 ;

应用卸载 , 就是将 /data/app/ , /data/dalvik-cache/ , /data/data/ 等目录下的相关文件删除 ;

八、安卓虚拟机

虚拟机是一个可以运行 class , odex , oat 可执行文件的运行环境 ;

常见的虚拟机有 Java 虚拟机 , Dalvik 虚拟机 , ART 虚拟机 ;

Java 虚拟机 :
运行的 class 字节码文件 , 运行程序时解码 class 文件中的内容 ;
基于栈架构 , 需要频繁在栈上读写数据 , 造成较多的指令分派 , 更多的内存访问次数 , 比较耗费 CPU 时间 ;

编译时 : Java 源码 , 使用 javac 编译器 , 编译成 class 字节码文件 ;
运行时 : 类加载器通过 Java 类库验证字节码 , 验证通过会后进入 Java 虚拟机 , 进入 Java 解释器 或 即时编译器 , 然后进入运行时系统 , 之后进入操作系统 , 然后调用硬件 ;

Dalvik 虚拟机 :
基于 JIT 机制 ( 即时编译技术 ) , Android

5.0 以下使用的虚拟机是 Dalvik 虚拟机 , 该虚拟机的可执行文件是 dex 文件 , 该文件比 class 字节码文件更小 ;
JIT ( Just In Time ) 即时编译技术 , 对应 Dalvik 虚拟机 ;
基于寄存器架构 , 通过寄存器间接访问数据 , 该方式比基于栈架构速度更快 ;

ART 虚拟机 :
Android

5.0 以上使用的虚拟机是 ART 虚拟机 ;
AOT ( Ahhead Of Time ) 预编译技术 , 对应 ART 虚拟机 ;

Java 虚拟机 / Dalvik 虚拟机 / ART 虚拟机 都向上层提供了 3 个接口 ,
JNI_GetDefaultJavaVMInitArgs
JNI_CreateJavaVM
JNI_GetCreatedJavaVMS ;

虚拟机之间可实现无缝衔接 ;

Dalvik 虚拟机 与 ART 虚拟机区别 : 虚拟机中有个 persist.sys.dvlvik.vm.lib 字段 ,
如果该字段存储的是 libdvm.so , 该虚拟机是 Dalvik 虚拟机 ;
如果该字段存储的是 ;ibart.so , 该虚拟机是 ART 虚拟机 ;

Dalvik 虚拟机 与 ART 虚拟机可执行文件 :

Dalvik 虚拟机加载 dex 文件加载时不是直接加载 dex 文件 , 加载执行的是 odex 文件 , odex 文件是通过 dexopt 工具对 dex 进行优化生成的 ;

ART 虚拟机加载 dex 文件时加载的是 oat 文件 , oat 文件时通过 dex2oat 工具对 dex 文件进行优化生成的 ;


本文的引用仅限自我学习如有侵权,请联系作者删除。
参考知识
Android基础学习
android应用开发从入门到精通
Android 开发指南:初学者入门
【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )


Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐