Android 基础 (入门必备)
这是构建任何 Android App 的基石,必须牢固掌握。

-
开发环境
- Android Studio: 官方 IDE,用于代码编写、调试、性能分析和打包。
- SDK (Software Development Kit): Android 软件开发工具包,包含平台库、构建工具和模拟器系统镜像。
- AVD (Android Virtual Device): Android 虚拟设备,用于在电脑上模拟运行和测试 App。
- Gradle: 项目构建自动化工具,用于管理依赖、编译代码和打包 APK。
-
四大组件
- Activity: 应用的界面,代表一个屏幕,用户与之交互的窗口。
- Service: 在后台执行长时间运行操作,没有用户界面。
- Broadcast Receiver: 接收系统或应用发出的广播消息(如开机、网络状态改变)。
- Content Provider: 应用间共享数据的标准方式(如联系人、日历)。
-
UI 开发
- XML 布局: 传统方式,通过 XML 文件描述界面结构。
- View 和 ViewGroup: UI 的基本构建块,View 是控件(如 Button),ViewGroup 是布局容器(如 LinearLayout, ConstraintLayout)。
- 常用布局:
LinearLayout: 线性布局,垂直或水平排列子元素。RelativeLayout: 相对布局,子元素相对于父容器或其他元素定位。FrameLayout: 帧布局,子元素堆叠在一起,常用于切换视图。ConstraintLayout: 约束布局,通过约束关系定位子元素,性能好,灵活,是目前的主流布局。
- 常用控件:
TextView,Button,EditText,ImageView,RecyclerView,ViewPager等。
-
数据存储
(图片来源网络,侵删)- SharedPreferences: 轻量级键值对存储,适合保存简单配置信息(如开关状态、用户名)。
- 内部存储: 存储在设备内部存储空间,App 卸载后数据被删除,其他应用无法访问。
- 外部存储: 存储在 SD 卡或共享存储空间,需要申请权限,其他应用在授权后可以访问。
- SQLite 数据库: 轻量级、嵌入式关系型数据库,适合存储结构化数据。
- 文件存储: 直接将数据写入文件。
-
多线程与异步处理
- Thread: Java 原生线程,操作复杂。
- AsyncTask: 轻量级异步类,已废弃,不推荐在新项目中使用。
- Handler & MessageQueue: 用于线程间通信,实现主线程更新 UI。
- HandlerThread & IntentService: 封装了 Looper 的线程和带后台处理的 Service,也已部分被弃用。
runOnUiThread(): 在 Activity/Fragment 中安全地将任务切换到主线程执行。
Android 核心进阶 (构建高质量 App)
掌握了基础后,这些技术是写出健壮、高效 App 的关键。
-
Jetpack 组件 (Google 推荐的官方架构组件)
- ViewModel: 存储和管理与 UI 相关的数据,配置更改(如屏幕旋转)时数据不会丢失。
- LiveData: 可观察的数据持有者,当数据变化时,能通知观察者(通常是 UI)并自动更新,与 ViewModel 配合使用。
- Room: 一个 SQLite 数据库的抽象层,提供了强大的 ORM(对象关系映射)功能,简化数据库操作。
- Navigation Component: 用于管理 App 的导航图,简化页面跳转和回退栈管理。
- Data Binding: 在布局文件中直接绑定数据源,减少 Activity/Fragment 中的模板代码。
- WorkManager: 确保后台任务(即使 App 退出或重启)能够可靠、灵活地执行。
- Paging Library: 帮助高效地加载和显示分页数据(如新闻列表、社交媒体动态)。
- Hilt: Google 推荐的依赖注入库,基于 Dagger 2,简化对象管理。
-
架构模式
(图片来源网络,侵删)- MVC (Model-View-Controller): 经典模式,但在 Android 中 Controller 和 View 耦合度较高,已不常用。
- MVP (Model-View-Presenter): 将 UI 逻辑从 Activity/Presenter 中抽离,通过 Presenter 连接 Model 和 View,解耦性更好。
- MVVM (Model-View-ViewModel): 当前 Android 开发的主流模式,View (XML/Activity) 和 ViewModel 完全解耦,通过 DataBinding/LiveData 进行通信,更易于测试和维护。
- MVI (Model-View-Intent): 基于 Single Source of Truth(单一数据源)的思想,所有状态变化都通过 Intent 驱动,适合处理复杂的 UI 交互。
-
Kotlin 语言特性
- 协程: 解决多线程问题的现代方案,轻量级,可以像写同步代码一样写异步逻辑,大大简化了回调地狱。
- Flow: 响应式编程的官方实现,用于异步处理包含 0 到多个元素的数据流。
- Ktx 扩展库: 为 Android 框架和 Jetpack 组件提供了大量 Kotlin 扩展函数,让代码更简洁(如
view.setOnClickListener,viewModelScope.launch)。
-
网络编程
- HTTP 客户端:
HttpURLConnection: Java 原生,功能简单。- OkHttp: 目前事实上的标准,高效、支持 HTTP/2、拦截器等高级功能。
- JSON 解析库:
- Gson: Google 出品,将 JSON 字符串和 Java/Kotlin 对象相互转换。
- Moshi: Square 出品,性能更好,支持 Kotlin 的默认参数和密封类。
- Jackson: 功能强大,生态系统完善。
- 网络请求封装:
- Retrofit: 最流行的网络请求库,基于 OkHttp,通过注解将 RESTful API 转换为 Java/Kotlin 接口,非常优雅和易于使用。
- WebSocket: 用于实现全双工的实时通信。
- HTTP 客户端:
高级与专项技术 (打造卓越体验)
-
性能优化
- UI 渲染性能:
- 过度绘制: 优化布局层级,减少不必要的绘制。
- 布局优化: 使用
<include>,<merge>标签,避免过度嵌套,合理使用ConstraintLayout。 - GPU 过载: 避免在
onDraw()中执行耗时操作,减少不必要的视图。
- 内存优化:
- 内存泄漏: 避免静态变量持有 Activity/Fragment 引用,及时注销监听器,使用
WeakReference。 - 内存抖动: 避免在循环中创建大量临时对象。
- 大图片加载: 使用
BitmapFactory.Options进行采样,或使用 Glide/Picasso 等图片加载库。
- 内存泄漏: 避免静态变量持有 Activity/Fragment 引用,及时注销监听器,使用
- 启动优化: 减少冷启动时间,优化 Application 初始化,异步加载非必要组件。
- 电量优化: 减少不必要的唤醒、网络请求和 CPU 计算,使用
WorkManager批量处理任务。
- UI 渲染性能:
-
依赖注入
- Hilt: Google 官方推荐,简化了依赖注入的配置,与 Jetpack 组件深度集成。
- Dagger 2: 功能强大但配置复杂,Hilt 的基础。
-
多模块化架构
- 目的: 将大型 App 拆分为多个模块(如
app,feature_login,feature_profile,common_ui,data),便于团队协作、代码复用和独立编译。 - 组件化: 将功能模块解耦,可以独立运行或作为组件被其他 App 引用。
- 目的: 将大型 App 拆分为多个模块(如
-
组件化与插件化
- 组件化: 是多模块化的高级形式,强调模块间的完全解耦和独立运行。
- 插件化: 动态加载 App 的部分功能(插件),可以实现热更新和按需加载,技术复杂度高。
-
安全性
- 代码混淆: 使用 ProGuard 或 R8 混淆代码,防止反编译。
- 签名与加固: 对 APK 进行签名,并使用 360 加固、梆梆等工具进行加固,防止逆向工程。
- 网络安全: 使用 HTTPS,证书校验,防止中间人攻击。
- 数据安全: 敏感数据加密存储(如 AES),使用 Android Keystore 管理密钥。
-
国际化与多语言适配
- 使用
strings.xml的不同文件夹(如values-zh,values-en)实现多语言支持。 - 处理文字长度、布局方向(LTR/RTL)等适配问题。
- 使用
开发与运维 (保障 App 质量)
-
版本控制
- Git: 目前唯一的行业标准,配合 GitHub, GitLab, Gitee 等平台进行代码托管和协作。
-
持续集成/持续部署
- GitHub Actions / GitLab CI / Jenkins: 自动化构建、测试、打包和部署流程,提高开发效率。
-
测试
- 单元测试: 测试最小的代码单元(如一个方法),使用 JUnit, Mockito。
- Android 测试框架:
- Espresso: 用于 UI 自动化测试,模拟用户操作。
- UI Automator: 用于跨应用、跨设备的 UI 测试。
- Robolectric: 在 JVM 环境中运行 Android 单元测试,速度快,不依赖模拟器。
-
崩溃分析与监控
- Firebase Crashlytics: Google 提供的实时崩溃报告工具。
- Bugly: 腾讯出品的类似工具,在国内使用广泛。
-
数据分析
- Firebase Analytics: Google 提供的免费数据分析工具。
- 友盟+, 神策数据: 国内主流的商业数据分析平台。
学习路径建议
- 新手阶段: 模块一 + 模块二中的 Jetpack (ViewModel, LiveData, Room) + Kotlin 基础,目标是能独立开发一个功能完整的 App。
- 进阶阶段: 深入学习 MVVM 架构、协程、Retrofit + Flow、性能优化、多模块化,目标是成为能负责复杂模块、解决线上问题的开发者。
- 高级阶段: 掌握 依赖注入、插件化/组件化、架构设计、底层原理(如 AMS, PMS, View 绘制流程),目标是成为架构师或技术专家。
希望这份总结能帮助你清晰地了解 Android 开发的技术版图,并规划好自己的学习路线!
