睿诚科技协会

Android App技术点有哪些核心与难点?

Android 基础 (入门必备)

这是构建任何 Android App 的基石,必须牢固掌握。

Android App技术点有哪些核心与难点?-图1
(图片来源网络,侵删)
  1. 开发环境

    • Android Studio: 官方 IDE,用于代码编写、调试、性能分析和打包。
    • SDK (Software Development Kit): Android 软件开发工具包,包含平台库、构建工具和模拟器系统镜像。
    • AVD (Android Virtual Device): Android 虚拟设备,用于在电脑上模拟运行和测试 App。
    • Gradle: 项目构建自动化工具,用于管理依赖、编译代码和打包 APK。
  2. 四大组件

    • Activity: 应用的界面,代表一个屏幕,用户与之交互的窗口。
    • Service: 在后台执行长时间运行操作,没有用户界面。
    • Broadcast Receiver: 接收系统或应用发出的广播消息(如开机、网络状态改变)。
    • Content Provider: 应用间共享数据的标准方式(如联系人、日历)。
  3. UI 开发

    • XML 布局: 传统方式,通过 XML 文件描述界面结构。
    • View 和 ViewGroup: UI 的基本构建块,View 是控件(如 Button),ViewGroup 是布局容器(如 LinearLayout, ConstraintLayout)。
    • 常用布局:
      • LinearLayout: 线性布局,垂直或水平排列子元素。
      • RelativeLayout: 相对布局,子元素相对于父容器或其他元素定位。
      • FrameLayout: 帧布局,子元素堆叠在一起,常用于切换视图。
      • ConstraintLayout: 约束布局,通过约束关系定位子元素,性能好,灵活,是目前的主流布局。
    • 常用控件: TextView, Button, EditText, ImageView, RecyclerView, ViewPager 等。
  4. 数据存储

    Android App技术点有哪些核心与难点?-图2
    (图片来源网络,侵删)
    • SharedPreferences: 轻量级键值对存储,适合保存简单配置信息(如开关状态、用户名)。
    • 内部存储: 存储在设备内部存储空间,App 卸载后数据被删除,其他应用无法访问。
    • 外部存储: 存储在 SD 卡或共享存储空间,需要申请权限,其他应用在授权后可以访问。
    • SQLite 数据库: 轻量级、嵌入式关系型数据库,适合存储结构化数据。
    • 文件存储: 直接将数据写入文件。
  5. 多线程与异步处理

    • Thread: Java 原生线程,操作复杂。
    • AsyncTask: 轻量级异步类,已废弃,不推荐在新项目中使用。
    • Handler & MessageQueue: 用于线程间通信,实现主线程更新 UI。
    • HandlerThread & IntentService: 封装了 Looper 的线程和带后台处理的 Service,也已部分被弃用。
    • runOnUiThread(): 在 Activity/Fragment 中安全地将任务切换到主线程执行。

Android 核心进阶 (构建高质量 App)

掌握了基础后,这些技术是写出健壮、高效 App 的关键。

  1. 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,简化对象管理。
  2. 架构模式

    Android App技术点有哪些核心与难点?-图3
    (图片来源网络,侵删)
    • 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 交互。
  3. Kotlin 语言特性

    • 协程: 解决多线程问题的现代方案,轻量级,可以像写同步代码一样写异步逻辑,大大简化了回调地狱。
    • Flow: 响应式编程的官方实现,用于异步处理包含 0 到多个元素的数据流。
    • Ktx 扩展库: 为 Android 框架和 Jetpack 组件提供了大量 Kotlin 扩展函数,让代码更简洁(如 view.setOnClickListener, viewModelScope.launch)。
  4. 网络编程

    • HTTP 客户端:
      • HttpURLConnection: Java 原生,功能简单。
      • OkHttp: 目前事实上的标准,高效、支持 HTTP/2、拦截器等高级功能。
    • JSON 解析库:
      • Gson: Google 出品,将 JSON 字符串和 Java/Kotlin 对象相互转换。
      • Moshi: Square 出品,性能更好,支持 Kotlin 的默认参数和密封类。
      • Jackson: 功能强大,生态系统完善。
    • 网络请求封装:
      • Retrofit: 最流行的网络请求库,基于 OkHttp,通过注解将 RESTful API 转换为 Java/Kotlin 接口,非常优雅和易于使用。
    • WebSocket: 用于实现全双工的实时通信。

高级与专项技术 (打造卓越体验)

  1. 性能优化

    • UI 渲染性能:
      • 过度绘制: 优化布局层级,减少不必要的绘制。
      • 布局优化: 使用 <include>, <merge> 标签,避免过度嵌套,合理使用 ConstraintLayout
      • GPU 过载: 避免在 onDraw() 中执行耗时操作,减少不必要的视图。
    • 内存优化:
      • 内存泄漏: 避免静态变量持有 Activity/Fragment 引用,及时注销监听器,使用 WeakReference
      • 内存抖动: 避免在循环中创建大量临时对象。
      • 大图片加载: 使用 BitmapFactory.Options 进行采样,或使用 Glide/Picasso 等图片加载库。
    • 启动优化: 减少冷启动时间,优化 Application 初始化,异步加载非必要组件。
    • 电量优化: 减少不必要的唤醒、网络请求和 CPU 计算,使用 WorkManager 批量处理任务。
  2. 依赖注入

    • Hilt: Google 官方推荐,简化了依赖注入的配置,与 Jetpack 组件深度集成。
    • Dagger 2: 功能强大但配置复杂,Hilt 的基础。
  3. 多模块化架构

    • 目的: 将大型 App 拆分为多个模块(如 app, feature_login, feature_profile, common_ui, data),便于团队协作、代码复用和独立编译。
    • 组件化: 将功能模块解耦,可以独立运行或作为组件被其他 App 引用。
  4. 组件化与插件化

    • 组件化: 是多模块化的高级形式,强调模块间的完全解耦和独立运行。
    • 插件化: 动态加载 App 的部分功能(插件),可以实现热更新和按需加载,技术复杂度高。
  5. 安全性

    • 代码混淆: 使用 ProGuard 或 R8 混淆代码,防止反编译。
    • 签名与加固: 对 APK 进行签名,并使用 360 加固、梆梆等工具进行加固,防止逆向工程。
    • 网络安全: 使用 HTTPS,证书校验,防止中间人攻击。
    • 数据安全: 敏感数据加密存储(如 AES),使用 Android Keystore 管理密钥。
  6. 国际化与多语言适配

    • 使用 strings.xml 的不同文件夹(如 values-zh, values-en)实现多语言支持。
    • 处理文字长度、布局方向(LTR/RTL)等适配问题。

开发与运维 (保障 App 质量)

  1. 版本控制

    • Git: 目前唯一的行业标准,配合 GitHub, GitLab, Gitee 等平台进行代码托管和协作。
  2. 持续集成/持续部署

    • GitHub Actions / GitLab CI / Jenkins: 自动化构建、测试、打包和部署流程,提高开发效率。
  3. 测试

    • 单元测试: 测试最小的代码单元(如一个方法),使用 JUnit, Mockito。
    • Android 测试框架:
      • Espresso: 用于 UI 自动化测试,模拟用户操作。
      • UI Automator: 用于跨应用、跨设备的 UI 测试。
      • Robolectric: 在 JVM 环境中运行 Android 单元测试,速度快,不依赖模拟器。
  4. 崩溃分析与监控

    • Firebase Crashlytics: Google 提供的实时崩溃报告工具。
    • Bugly: 腾讯出品的类似工具,在国内使用广泛。
  5. 数据分析

    • Firebase Analytics: Google 提供的免费数据分析工具。
    • 友盟+, 神策数据: 国内主流的商业数据分析平台。

学习路径建议

  • 新手阶段: 模块一 + 模块二中的 Jetpack (ViewModel, LiveData, Room) + Kotlin 基础,目标是能独立开发一个功能完整的 App。
  • 进阶阶段: 深入学习 MVVM 架构协程Retrofit + Flow性能优化多模块化,目标是成为能负责复杂模块、解决线上问题的开发者。
  • 高级阶段: 掌握 依赖注入插件化/组件化架构设计底层原理(如 AMS, PMS, View 绘制流程),目标是成为架构师或技术专家。

希望这份总结能帮助你清晰地了解 Android 开发的技术版图,并规划好自己的学习路线!

分享:
扫描分享到社交APP
上一篇
下一篇