25. 移动端-Android安卓-开发基础
Android是一个基于Linux内核的开源移动操作系统,由Google领导的开源项目维护。它具有开源、用户基础广泛、生态系统丰富等优势,支持多种设备。系统架构分为应用层、框架层、系统运行库层和Linux内核层。开发Android应用需要掌握Java/Kotlin等编程语言。
文章目录
前言
什么是 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内核层。

二、基础知识
1. 编程语言
- Java:传统的 Android 开发语言,拥有丰富的资源和社区支持。
- Kotlin:现代编程语言,官方推荐用于 Android 开发,具有简洁和安全的特性。
2. 基础知识
- 面向对象编程 (OOP):理解类、对象、继承、多态等概念。
- XML:用于定义 Android 应用的用户界面布局。
3. 四大组件
Android四大基本组件分别是
- Activity 简单的可以认为看到的一个屏幕的内容就是一个Activity
- Service服务 有些应用不一定有界面, 或者在界面之外要还能运行, 例如音乐播放器, 这时候就需要用到Service
- Content Provider内容提供者 Android的数据操作基本都基于这个
- BroadcastReceiver广播接收器
4. 基本UI组件
API 过期
TabActivity 在4.0 过时, 被Fragement替换
- Notification 通知组件
- Fragment 组件 分页组件 --【当前重点学习-用于项目开始的布局】
- Gallery组件 拖动组件
- RadioButton组件 单选按钮
5. 五大布局
- LinearLayout 线性布局, 使用的比较多的布局
- FrameLayout 帧布局, 类似动画一帧一帧的那种(用于Fragment的容器)
- RelativeLayout 相对布局
- AbsoluteLayout 绝对布局(不推荐使用, 在不同型号的终端上显示可能不同)
- TableLayout 表格布局
6. 开发 Android 应用流程
FinClip Android 工程师梳理了从零开始如何开发一个App,对于新手开发者特别有帮助,大家可以收藏起来。
与开发 iOS 应用的逻辑基本一致,开发 Android 应用也需要以下 5 步:
①开发工具安装和配置;
②搭建开发环境;
③在 Android Studio 中,创建第一个项目;
④完成简单 Hello world 代码编写;
⑤编译 APK 文件,让应用在手机上跑起来。
三、搭建开发环境
1. 安装 Android Studio
1. Android Studio开发环境的下载
Android Studio 是谷歌官方推荐的 Android 开发集成开发环境 (IDE),可以从官网和中文社区中下载 :
- 访问 https://developer.android.com/studio
- 访问https://developer.android.google.cn/studio。
- 下载适用于你操作系统的安装包。

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 按钮,选择目标设备,应用将被编译并安装到设备上。
-
深入学习 Android 组件
Activity代表一个用户界面屏幕。
生命周期管理:onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()。
Service
在后台执行长时间运行的操作。
两种类型:Started 和 Bound。
Broadcast Receiver
接收和处理广播消息。
例如,电池电量变化、网络状态变化等。
Content Provider
管理应用之间的数据共享。
提供数据访问接口。
-
使用 Android Studio 工具
Layout Editor可视化设计用户界面。
支持拖放组件和属性编辑。
Logcat
查看应用日志和调试信息。
过滤不同级别的日志输出。
Device Manager
管理虚拟设备 (AVD) 和连接的物理设备。
启动、停止和配置设备。
Debugger
设置断点、单步执行代码。
查看变量值和调用堆栈。
-
调试与测试
调试技巧使用断点调试代码。
查看 Logcat 日志。
使用调试器查看变量和内存状态。
测试
单元测试:测试单个函数或模块。
UI 测试:使用 Espresso 或 UI Automator 进行用户界面测试。
集成测试:测试多个组件之间的交互。
模拟器与真机测试
使用 Android 虚拟设备 (AVD) 进行模拟器测试。
在真实设备上进行真机测试,确保兼容性和性能。
-
发布应用
准备发布签名应用:使用 keystore 文件对应用进行签名。
版本管理:设置版本号和版本名称。
优化应用:减少 APK 大小,优化性能。
发布到 Google Play
创建 Google Play 开发者账号。
创建应用条目。
上传 APK 或 App Bundle。
填写应用信息:描述、截图、图标等。
设置定价和分发。
提交审核。
维护与更新
监控应用性能和使用情况。
修复 bug 和优化功能。
发布更新版本。
- 学习资源
官方文档
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 安装包 中所有文件的 摘要明文 ;
- 剩余文件 : 都是可忽略的资源文件 ;

④ 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 安装流程
- 4 种安装方式 :
① 系统程序安装 ;
② 使用应用市场安装 ;
③ 手机自带安装 ;
④ 使用 ADB 调试工具安装 ;
- 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 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )
更多推荐

所有评论(0)