移动开发技能 software-mobile

这个技能提供了移动应用开发的全套参考指南,涵盖iOS、Android和跨平台开发的技术选型、架构模式、性能优化、测试部署等核心内容。关键词:移动开发、iOS开发、Android开发、Swift、Kotlin、React Native、Flutter、跨平台、架构设计、性能优化、CI/CD、应用商店发布。

移动开发 0 次安装 0 次浏览 更新于 3/7/2026

名称: software-mobile 描述: 面向iOS(Swift/SwiftUI/UIKit)、Android(Kotlin/Jetpack Compose)和跨平台(React Native、Flutter、Kotlin Multiplatform、WebView)的生产级移动应用开发和架构。用于导航、状态管理、网络请求、离线存储、身份验证/通行密钥、推送通知、性能优化、测试、CI/CD,以及应用商店发布准备。

移动开发技能 — 快速参考

本技能为移动开发者提供构建原生和跨平台移动应用的执行就绪模式。当您需要iOS/Android应用架构、UI组件、导航流程、API集成、离线存储、身份验证或移动特定功能时,应用这些模式。


何时使用此技能

当您需要时使用此技能:

  • iOS应用开发(Swift、SwiftUI、UIKit)
  • Android应用开发(Kotlin、Jetpack Compose)
  • 跨平台开发(React Native、WebView)
  • 移动应用架构和模式
  • 导航和路由
  • 状态管理(Redux、MobX、MVVM)
  • 网络请求和API集成
  • 本地数据存储(Core Data、Room、SQLite)
  • 身份验证和会话管理
  • 推送通知(APNs、FCM)
  • 相机和媒体访问
  • 位置服务
  • 应用商店/Play商店部署
  • 移动性能优化
  • 离线优先架构
  • 深度链接和通用链接

快速参考表

任务 iOS Android 跨平台 何时使用
原生UI SwiftUI + UIKit Jetpack Compose + Views React Native 原生:最佳性能;跨平台:代码共享
导航 NavigationStack Navigation组件 React Navigation 平台特定以实现原生感
状态管理 @State/@Observable ViewModel + StateFlow Redux/MobX iOS:@Observable;Android:ViewModel;RN:Redux
网络请求 URLSession + async/await Retrofit + Coroutines Axios/Fetch 原生:类型安全;RN:JavaScript生态系统
本地存储 Core Data + SwiftData Room数据库 AsyncStorage/SQLite 原生:完全控制;RN:更简单
推送通知 APNs FCM React Native Firebase 原生:平台特定;RN:统一API
后台任务 BGTaskScheduler WorkManager Headless JS 用于计划/后台工作
深度链接 通用链接 应用链接 React Navigation链接 用于基于URL的应用入口
身份验证 AuthenticationServices 凭证管理器 Expo AuthSession 用于社交/生物识别身份验证
分析 Firebase/Amplitude Firebase/Amplitude Expo Analytics 跟踪用户行为

决策树:平台选择

需要为[目标受众]构建移动应用:
    │
    ├─ 仅iOS?
    │   ├─ 新应用? → SwiftUI(现代、声明式)
    │   ├─ 现有UIKit代码库? → UIKit + 逐步采用SwiftUI
    │   └─ 复杂动画? → UIKit以进行精细控制
    │
    ├─ 仅Android?
    │   ├─ 新应用? → Jetpack Compose(现代、声明式)
    │   ├─ 现有Views代码库? → Views + 逐步采用Compose
    │   └─ 复杂自定义视图? → 自定义视图以进行精细控制
    │
    ├─ 同时iOS和Android?
    │   ├─ 需要最大性能/平台保真度?
    │   │   └─ 构建单独的原生应用(Swift + Kotlin)
    │   │
    │   ├─ 需要更快开发 + 代码共享?
    │   │   ├─ JavaScript/TypeScript团队? → React Native(Expo管理或裸项目)
    │   │   ├─ Dart团队? → Flutter
    │   │   └─ Kotlin团队? → Kotlin Multiplatform(KMP)
    │   │
    │   ├─ Kotlin Multiplatform(KMP)?
    │   │   ├─ 仅共享业务逻辑? → KMP共享模块 + 原生UI
    │   │   ├─ 共享一些UI? → Compose Multiplatform(验证iOS成熟度以满足需求)
    │   │   └─ 共享模块需要平台UI? → 保持原生UI,共享领域/数据/网络
    │   │
    │   └─ 包装现有Web应用?
    │       ├─ 简单包装? → WebView(iOS WKWebView / Android WebView)
    │       └─ 需要原生功能? → Capacitor或React Native WebView
    │
    └─ 仅原型/MVP?
        └─ React Native或Flutter以实现最快迭代

决策树:架构模式

选择架构模式?
    │
    ├─ iOS(Swift)?
    │   ├─ SwiftUI应用? → MVVM与@Observable/ObservableObject(基于操作系统基准)
    │   ├─ 复杂SwiftUI? → TCA(Composable Architecture)以提高可测试性
    │   ├─ UIKit应用? → MVVM-C(协调器模式)
    │   ├─ 大型团队? → 清洁架构 + MVVM
    │   └─ 简单应用? → MVC(Apple默认)
    │
    ├─ Android(Kotlin)?
    │   ├─ Compose应用? → MVVM与ViewModel + StateFlow
    │   ├─ Views应用? → MVVM与LiveData
    │   ├─ 大型团队? → 清洁架构 + MVVM
    │   └─ 简单应用? → Activity/Fragment基础
    │
    └─ React Native?
        ├─ 小型应用? → Context API + useState
        ├─ 中型应用? → Redux Toolkit或Zustand
        └─ 大型应用? → Redux + RTK Query + 基于功能的结构

决策树:数据持久化

需要在本地存储数据?
    │
    ├─ 简单键值对?
    │   ├─ iOS → UserDefaults
    │   ├─ Android → SharedPreferences / DataStore
    │   └─ RN → AsyncStorage
    │
    ├─ 具有关系的结构化数据?
    │   ├─ iOS → Core Data或SwiftData
    │   ├─ Android → Room数据库
    │   └─ RN → WatermelonDB或Realm
    │
    ├─ 安全凭证?
    │   ├─ iOS → 钥匙串
    │   ├─ Android → EncryptedSharedPreferences / Keystore
    │   └─ RN → react-native-keychain
    │
    └─ 大文件/媒体?
        ├─ iOS → FileManager(文档/缓存)
        ├─ Android → 内部/外部存储
        └─ RN → react-native-fs

决策树:网络请求

需要进行API调用?
    │
    ├─ iOS?
    │   ├─ 简单REST? → URLSession + async/await
    │   ├─ 复杂API? → URLSession + Codable
    │   └─ GraphQL? → Apollo iOS
    │
    ├─ Android?
    │   ├─ 简单REST? → Retrofit + Coroutines
    │   ├─ 复杂API? → Retrofit + OkHttp拦截器
    │   └─ GraphQL? → Apollo Android
    │
    └─ React Native?
        ├─ 简单REST? → fetch()或Axios
        ├─ 复杂API? → RTK Query或React Query
        └─ GraphQL? → Apollo Client

核心能力

iOS开发

  • UI框架:SwiftUI(声明式)、UIKit(命令式)
  • 架构:MVVM、清洁架构、协调器、TCA(Composable Architecture)
  • 并发:Swift Concurrency(async/await、actors、TaskGroup);保持UI状态在@MainActor上;根据情况启用严格并发检查
  • 存储:Core Data、SwiftData、钥匙串
  • 网络请求:URLSession、async/await模式
  • 平台合规:隐私清单文件 + 必需原因API、后台执行限制、无障碍设置(动态类型、VoiceOver)
  • 防御性解码:处理缺失字段、数组/字典格式、snake_case/camelCase

Android开发

  • UI框架:Jetpack Compose(声明式)、Views(XML)
  • 架构:MVVM、清洁架构、MVI
  • 并发:Coroutines、Flow、LiveData
  • 存储:Room、DataStore、Keystore
  • 网络请求:Retrofit、OkHttp、Ktor

跨平台开发

  • Kotlin Multiplatform(KMP):共享领域/数据/网络;保持原生UI;当共享UI值得约束时考虑Compose Multiplatform
  • React Native:JavaScript/TypeScript;评估新架构就绪度和原生模块表面积;Expo管理路径通常是绿色项目最快的
  • Flutter:Dart;高代码共享;根据需求验证平台特定差距和插件成熟度
  • WebView:WKWebView(iOS)、WebView(Android)、JavaScript桥接

平台基准(验证当前要求)

iOS/iPadOS(核心)

Android(核心)

跨平台(核心)

  • 功能对等是明确的(记录哪些是原生仅有的 vs 共享的)[推断]
  • 桥接被视为公共API(版本化、测试和可观察)[推断]
  • React Native升级遵循官方升级指南;根据您的原生模块表面积验证新架构就绪度 https://reactnative.dev/docs/upgrading
  • Expo SDK升级遵循Expo发布说明和升级指南 https://expo.dev/changelog

可选:AI/自动化扩展

注意:除非应用包含AI/自动化功能,否则跳过。


常见模式

应用启动清单

  1. 初始化依赖项

    • 配置DI容器(Hilt/Koin/Swinject)
    • 设置日志记录和崩溃报告
    • 初始化分析
  2. 检查身份验证状态

    • 验证存储的令牌
    • 如果需要则刷新
    • 路由到登录或主屏幕
  3. 配置应用状态

    • 加载用户偏好
    • 设置推送通知处理器
    • 初始化深度链接处理

离线优先架构

1. 本地优先数据访问
   - 始终从本地数据库读取
   - 立即显示缓存数据
   - 显示同步加载指示器

2. 后台同步
   - 队列写入操作
   - 当连接可用时同步
   - 处理冲突解决

3. 乐观更新
   - 立即更新UI
   - 在后台同步
   - 失败时回滚

推送通知设置

iOS(APNs):
1. 启用推送通知能力
2. 请求用户权限
3. 注册远程通知
4. 处理设备令牌
5. 实现通知委托

Android(FCM):
1. 添加Firebase到项目
2. 实现FirebaseMessagingService
3. 处理通知/数据消息
4. 管理通知渠道(Android 8+)
5. 处理后台/前台状态

性能优化

领域 iOS Android 指标
启动时间 预热、懒加载 冷启动优化 < 2秒冷启动
列表滚动 LazyVStack、预取 LazyColumn、分页 60 FPS
图像加载 AsyncImage、缓存 Coil/Glide、磁盘缓存 < 100毫秒可见
内存 Instruments分析 LeakCanary、分析器 无内存泄漏
电池 后台应用刷新限制 Doze模式合规 最小消耗

应用商店部署清单

iOS应用商店

  • [ ] 应用图标(所有必需尺寸)
  • [ ] 启动屏幕配置
  • [ ] 每个目标和嵌入框架的隐私清单(iOS 18+)
  • [ ] 必需原因API已声明理由
  • [ ] 第三方SDK隐私清单附加;SDK签名证明(iOS 19+)
  • [ ] Info.plist权限解释
  • [ ] 应用商店截图(所有设备尺寸)
  • [ ] 应用商店描述和关键词
  • [ ] 隐私政策URL
  • [ ] TestFlight beta测试

Google Play商店

  • [ ] 应用图标和功能图
  • [ ] 商店列表截图
  • [ ] 隐私政策URL
  • [ ] 内容评级问卷
  • [ ] 目标API级别合规
  • [ ] 数据安全表
  • [ ] 内部/封闭/开放测试轨道

导航

资源

共享清单

共享工具(集中模式 — 提取,不重复)

模板


避免的反模式

反模式 问题 解决方案
阻塞主线程 UI冻结、ANRs 对所有I/O使用async/coroutines
庞大的视图控制器 难以测试/维护 提取到MVVM/服务
硬编码字符串 无本地化 使用NSLocalizedString/strings.xml
忽略生命周期 内存泄漏、崩溃 尊重activity/view生命周期
无离线处理 无网络时用户体验差 缓存数据、队列操作
在代码中存储秘密 安全漏洞 使用钥匙串/Keystore
使用decode()而无回退 在缺失/错误格式API数据时崩溃 使用decodeIfPresent()带默认值
缺少@Bindable用于@Observable NavigationStack绑定不工作 在body中添加@Bindable var vm = vm

趋势意识协议

重要:当用户询问移动开发的推荐问题时,您必须使用网络搜索功能(如果可用)在回答前检查当前趋势。如果网络搜索不可用,请说明并使用data/sources.json,明确标记推荐可能已过时。

触发条件

  • “对于[用例],最好的移动框架是什么?”
  • “我应该使用什么进行[跨平台/原生/混合]开发?”
  • “iOS/Android开发的最新动态是什么?”
  • “[Swift/Kotlin/React Native]的当前最佳实践?”
  • “在2026年,[React Native/Flutter/Expo]还相关吗?”
  • “[React Native] vs [Flutter] vs [原生]?”
  • “对于[离线/推送/深度链接]的最佳方法?”

必需搜索

  1. 搜索:"移动开发最佳实践 2026"
  2. 搜索:"[iOS/Android/React Native/Flutter] 更新 2026"
  3. 搜索:"移动框架比较 2026"
  4. 搜索:"[Expo/Swift/Kotlin] 新功能 2026"

报告内容

搜索后,提供:

  • 当前格局:现在流行的框架/方法是什么
  • 新兴趋势:正在获得关注的新模式或工具
  • 已弃用/衰退:正在失去相关性的方法
  • 推荐:基于新数据和最近发布

示例主题(用新搜索验证)

  • 当前iOS + Swift Concurrency迁移指南
  • 当前Play目标SDK政策和身份/身份验证指南
  • React Native新架构就绪度和升级痛点
  • Expo管理 vs 裸React Native权衡
  • 2026年Flutter vs React Native vs KMP生态系统
  • 2026年Compose Multiplatform对iOS的就绪度

相关技能