2026 App 开发完整指南:Android、iOS、跨平台开发与安卓应用上线全流程
本文系统讲解 App 开发全流程,涵盖 Android 原生开发、iPhone/iOS 开发、Flutter、React Native、uni-app 等跨平台方案,并结合前端开发者学习路线,详细拆解页面开发、登录注册、路由导航、网络请求、本地存储、权限、推送、支付等核心模块。同时重点整理 Android 应用从开发者账号申请、APP 备案、软著、隐私政策、签名打包、APK/AAB、Google
App 开发完整指南:Android、iPhone/iOS、跨平台开发与 Android 应用从申请到上线全流程
适合对象:前端开发工程师、移动端初学者、独立开发者、准备开发并上架 Android App / iPhone App 的开发者。
更新时间:2026 年 6 月。
说明:本文把 App 开发基础知识、Android 原生开发、iPhone/iOS 原生开发、跨平台开发、完整项目流程、Android 应用从申请到上线流程、常见审核问题与解决方案、官方资源链接 全部整合到一起。
注意:应用市场规则会持续变化,正式提交前请以各平台最新官方文档为准。
目录
- 一、App 开发到底是什么
- 二、Android App 开发详细讲解
- 三、iPhone / iOS App 开发详细讲解
- 四、Android 和 iPhone App 的区别
- 五、跨平台 App 开发方案
- 六、前端开发者怎么选择 App 技术路线
- 七、App 开发完整流程
- 八、App 项目必须掌握的核心模块
- 九、实际项目案例:商城 App
- 十、Android 应用从申请到上线完整流程
- 十一、上线前资料准备
- 十二、开发者账号申请流程
- 十三、APP 备案、软著、隐私政策与资质准备
- 十四、Android 项目打包前检查
- 十五、签名、APK、AAB 详细讲解
- 十六、Google Play 上架完整流程
- 十七、国内安卓应用市场上架流程
- 十八、审核常见问题与解决方案
- 十九、上线后的版本更新流程
- 二十、上线前检查清单
- 二十一、官方资源和文档链接表
- 二十二、推荐学习路线
- 二十三、总结建议
一、App 开发到底是什么
App 开发就是为手机、平板、车机、手表等移动设备开发应用程序。
常见 App 类型包括:
| 类型 | 平台 | 常用技术 |
|---|---|---|
| Android App | 小米、华为、OPPO、vivo、三星、Pixel 等 Android 设备 | Kotlin、Java、Jetpack Compose、Android Studio |
| iPhone App / iOS App | iPhone、iPad | Swift、SwiftUI、UIKit、Xcode |
| 跨平台 App | 一套代码同时打包 Android 和 iOS | Flutter、React Native、uni-app、Kotlin Multiplatform |
| H5 App / Hybrid App | App 内嵌 Web 页面 | WebView、Vue、React、JavaScript |
| 小程序类应用 | 微信、支付宝、抖音、百度、快应用等 | 小程序框架、uni-app、Taro |
1. 原生 App
原生 App 是分别使用 Android 和 iOS 官方技术开发。
Android:Kotlin / Java + Android Studio
iOS:Swift / Objective-C + Xcode
优点:
性能最好
系统能力支持最完整
用户体验更接近系统原生
适合大型复杂项目
适合需要深度调用相机、蓝牙、定位、支付、推送等能力的项目
缺点:
Android 和 iOS 要写两套代码
开发成本更高
团队要求更高
维护成本更高
2. 跨平台 App
跨平台 App 是用一套代码同时开发 Android 和 iOS。
常见方案:
Flutter
React Native
uni-app
Kotlin Multiplatform
Taro
Ionic
优点:
一套代码多端运行
开发效率高
适合中小团队
适合前端开发者快速转移动端
缺点:
部分原生能力仍需要写插件
复杂性能优化难度较高
某些平台差异仍需要单独适配
3. Hybrid App
Hybrid App 是原生壳 + WebView 页面。
常见结构:
原生 App 外壳
+
WebView 加载 H5 页面
适合:
活动页
营销页
内容展示页
企业内部应用
快速迭代页面
不适合:
高性能动画
复杂视频处理
大型游戏
重度原生交互
二、Android App 开发详细讲解
1. Android App 用什么开发
Android 官方推荐现代开发方式:
Kotlin + Jetpack Compose + Android Studio
也可以使用传统方式:
Java / Kotlin + XML 布局 + Android View 系统
2. Android 推荐技术栈
| 模块 | 推荐选择 | 说明 |
|---|---|---|
| 编程语言 | Kotlin | Android 官方主推语言,语法现代 |
| 兼容语言 | Java | 老项目仍大量使用 |
| 开发工具 | Android Studio | 官方 IDE |
| UI 开发 | Jetpack Compose | 声明式 UI,类似 React / Vue 思想 |
| 传统 UI | XML + View | 老项目和部分复杂场景仍常用 |
| 架构 | MVVM / Clean Architecture | 企业项目常见架构 |
| 状态管理 | ViewModel + StateFlow | 管理页面数据和状态 |
| 网络请求 | Retrofit + OkHttp | Android 常用网络请求方案 |
| JSON 解析 | Kotlinx Serialization / Gson / Moshi | 解析后端接口数据 |
| 本地数据库 | Room / SQLite | 本地数据存储 |
| 简单存储 | DataStore / SharedPreferences | 保存 token、设置项 |
| 图片加载 | Coil / Glide | 加载网络图片 |
| 异步处理 | Kotlin Coroutine / Flow | 协程和响应式流 |
| 依赖注入 | Hilt / Koin | 管理对象依赖 |
| 分页 | Paging 3 | 列表分页 |
| 导航 | Navigation Compose | 页面跳转 |
| 打包格式 | APK / AAB | APK 适合国内市场,AAB 适合 Google Play |
| 发布平台 | Google Play / 国内应用市场 | 应用分发 |
3. Android Studio 是什么
Android Studio 是 Google 官方 Android 开发工具,用来:
创建项目
编写 Kotlin / Java 代码
设计 UI 页面
运行模拟器
连接真机调试
查看日志
性能分析
打包 APK / AAB
上传和发布应用
官方文档:
4. Kotlin 是什么
Kotlin 是 Android 官方推荐的现代编程语言。
简单示例:
val name = "张三"
var age = 18
fun sayHello() {
println("你好,$name")
}
Kotlin 的特点:
语法简洁
空安全
支持函数式编程
和 Java 互通
适合 Android 现代开发
5. Activity 是什么
Activity 可以理解为 Android 中的一个页面入口。
示例:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text("你好,Android App")
}
}
}
传统理解:
一个 Activity 可以代表一个页面
一个 App 可以有多个 Activity
现在 Compose 项目中,也可以一个 Activity 管理多个页面
6. Jetpack Compose 是什么
Jetpack Compose 是 Android 的现代声明式 UI 工具包。
官方文档:
Compose 和前端框架思想很像。
Vue 写法:
<template>
<div>{{ title }}</div>
</template>
Compose 写法:
@Composable
fun HomePage() {
Text(text = "首页")
}
核心思想:
UI = 状态的函数
状态变化
↓
界面自动更新
这和 React / Vue 的响应式 UI 思想非常接近。
7. Compose 常用组件
| 组件 | 作用 |
|---|---|
| Text | 文本 |
| Button | 按钮 |
| TextField | 输入框 |
| Image | 图片 |
| Column | 垂直布局 |
| Row | 水平布局 |
| Box | 层叠布局 |
| LazyColumn | 长列表 |
| LazyRow | 横向列表 |
| Scaffold | 页面基础结构 |
| TopAppBar | 顶部导航栏 |
| BottomNavigation | 底部导航 |
| Card | 卡片 |
| Dialog | 弹窗 |
| Snackbar | 提示条 |
8. Compose 登录页示例
@Composable
fun LoginPage() {
var phone by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
Column(
modifier = Modifier.padding(24.dp),
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Text(
text = "登录",
fontSize = 28.sp,
fontWeight = FontWeight.Bold
)
TextField(
value = phone,
onValueChange = { phone = it },
label = { Text("请输入手机号") }
)
TextField(
value = password,
onValueChange = { password = it },
label = { Text("请输入密码") },
visualTransformation = PasswordVisualTransformation()
)
Button(
onClick = {
// 点击登录,调用接口
},
modifier = Modifier.fillMaxWidth()
) {
Text("登录")
}
}
}
9. Android 项目结构
常见项目结构:
app/
├── src/
│ ├── main/
│ │ ├── java/com/example/app/
│ │ │ ├── ui/ // 页面和组件
│ │ │ ├── viewmodel/ // ViewModel 状态管理
│ │ │ ├── data/ // 数据层
│ │ │ ├── network/ // 网络请求
│ │ │ ├── repository/ // 数据仓库
│ │ │ ├── model/ // 数据模型
│ │ │ └── MainActivity.kt // 入口 Activity
│ │ ├── res/ // 图片、图标、颜色、字体
│ │ └── AndroidManifest.xml // App 配置文件
├── build.gradle.kts
└── proguard-rules.pro
更规范的企业项目结构:
com.example.mall/
├── app/
├── core/
│ ├── network/
│ ├── database/
│ ├── common/
│ └── design/
├── feature/
│ ├── login/
│ ├── home/
│ ├── goods/
│ ├── cart/
│ └── profile/
└── data/
├── repository/
├── model/
└── datasource/
10. Android 常见架构:MVVM
MVVM 分为:
| 层 | 作用 |
|---|---|
| Model | 数据模型,例如用户、商品、订单 |
| View | 页面 UI,例如登录页、首页、详情页 |
| ViewModel | 管理页面状态和业务逻辑 |
流程:
用户点击按钮
↓
UI 调用 ViewModel
↓
ViewModel 调用 Repository
↓
Repository 调用接口 / 数据库
↓
返回数据
↓
ViewModel 更新状态
↓
UI 自动刷新
示例:
class LoginViewModel : ViewModel() {
var phone by mutableStateOf("")
var password by mutableStateOf("")
var loading by mutableStateOf(false)
fun login() {
loading = true
// 这里通常会调用 Repository
// repository.login(phone, password)
}
}
11. Android 网络请求
常用技术:
Retrofit
OkHttp
Kotlin Coroutine
Flow
示例:
interface ApiService {
@POST("login")
suspend fun login(@Body body: LoginRequest): LoginResponse
}
data class LoginRequest(
val phone: String,
val password: String
)
data class LoginResponse(
val token: String,
val userName: String
)
12. Android 本地存储
| 类型 | 技术 | 适合存什么 |
|---|---|---|
| 简单键值 | DataStore / SharedPreferences | token、主题、语言 |
| 数据库 | Room / SQLite | 聊天记录、商品缓存、离线数据 |
| 文件 | File API | 图片、视频、下载文件 |
| 安全存储 | Android Keystore | 密钥、敏感 token |
13. Android 权限
常见权限:
| 权限 | 用途 |
|---|---|
| CAMERA | 拍照、扫码 |
| ACCESS_FINE_LOCATION | 精准定位 |
| ACCESS_COARSE_LOCATION | 模糊定位 |
| RECORD_AUDIO | 录音、语音 |
| READ_MEDIA_IMAGES | 读取图片 |
| READ_MEDIA_VIDEO | 读取视频 |
| POST_NOTIFICATIONS | 通知 |
| BLUETOOTH_CONNECT | 蓝牙连接 |
| INTERNET | 网络访问 |
权限原则:
能不用就不用
能少申请就少申请
用户触发功能时再申请
申请前说明用途
隐私政策中写清楚权限用途
三、iPhone / iOS App 开发详细讲解
1. iPhone App 用什么开发
iPhone App 主要使用:
Swift + SwiftUI + Xcode
传统项目也可能使用:
Objective-C + UIKit
Swift + UIKit
官方文档:
2. iOS 推荐技术栈
| 模块 | 推荐选择 | 说明 |
|---|---|---|
| 编程语言 | Swift | Apple 现代开发语言 |
| 开发工具 | Xcode | Apple 官方 IDE |
| UI 框架 | SwiftUI | 声明式 UI |
| 传统 UI | UIKit | 老项目和复杂 UI 仍常用 |
| 架构 | MVVM / MVC / Clean Architecture | iOS 常见架构 |
| 网络请求 | URLSession / Alamofire | 接口请求 |
| 本地存储 | UserDefaults / Core Data / SQLite | 本地数据 |
| 安全存储 | Keychain | 密码、token |
| 图片加载 | AsyncImage / SDWebImage | 图片加载 |
| 测试 | XCTest / TestFlight | 单元测试和内测 |
| 发布 | App Store Connect | 上架 App Store |
3. Swift 是什么
Swift 是 Apple 推出的现代编程语言,可以开发:
iOS App
iPadOS App
macOS App
watchOS App
tvOS App
visionOS App
Swift 示例:
let name = "张三"
var age = 18
func sayHello() {
print("你好,\(name)")
}
特点:
语法简洁
类型安全
性能好
生态完整
适合 Apple 全平台开发
4. SwiftUI 是什么
SwiftUI 是 Apple 的声明式 UI 框架。
示例:
import SwiftUI
struct ContentView: View {
var body: some View {
Text("你好,iPhone App")
.font(.title)
.padding()
}
}
可以把 struct ContentView: View 理解成一个前端组件。
SwiftUI 也符合:
数据变化
↓
界面自动变化
这和 Vue / React 的思路很接近。
5. SwiftUI 常用组件
| 组件 | 作用 |
|---|---|
| Text | 文本 |
| Button | 按钮 |
| TextField | 输入框 |
| SecureField | 密码输入框 |
| Image | 图片 |
| VStack | 垂直布局 |
| HStack | 水平布局 |
| ZStack | 层叠布局 |
| List | 列表 |
| NavigationStack | 页面导航 |
| TabView | 底部 Tab |
| Form | 表单 |
| Sheet | 弹出页面 |
| Alert | 提示框 |
6. SwiftUI 登录页示例
import SwiftUI
struct LoginView: View {
@State private var phone = ""
@State private var password = ""
var body: some View {
VStack(spacing: 20) {
Text("登录")
.font(.largeTitle)
.bold()
TextField("请输入手机号", text: $phone)
.textFieldStyle(.roundedBorder)
SecureField("请输入密码", text: $password)
.textFieldStyle(.roundedBorder)
Button("登录") {
// 调用登录接口
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}
7. iOS 项目结构
常见项目结构:
MyApp/
├── App/
│ └── MyAppApp.swift // App 入口
├── Views/
│ ├── HomeView.swift // 首页
│ ├── LoginView.swift // 登录页
│ └── ProfileView.swift // 个人中心
├── ViewModels/
│ └── LoginViewModel.swift // 页面逻辑
├── Models/
│ └── User.swift // 数据模型
├── Services/
│ └── APIService.swift // 网络请求
├── Assets.xcassets // 图片、图标、颜色
└── Info.plist // App 配置
8. iOS 网络请求
使用 URLSession:
let url = URL(string: "https://api.example.com/login")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("请求失败:\(error)")
return
}
if let data = data {
print("请求成功:\(data)")
}
}
task.resume()
9. iOS 本地存储
| 类型 | 技术 | 用途 |
|---|---|---|
| 简单存储 | UserDefaults | token、设置、开关 |
| 数据库 | Core Data / SQLite | 离线数据、复杂对象 |
| 文件 | FileManager | 图片、文件缓存 |
| 安全存储 | Keychain | 密码、token、敏感信息 |
10. iOS 权限
iOS 权限必须在 Info.plist 中说明用途。
常见权限:
| 权限 | 用途 |
|---|---|
| Camera | 拍照、扫码 |
| Photo Library | 相册 |
| Location | 定位 |
| Microphone | 麦克风 |
| Bluetooth | 蓝牙 |
| Push Notifications | 推送 |
| Contacts | 通讯录 |
权限文案必须明确,不要写得太模糊。
例如:
错误:需要使用相机
正确:用于扫码登录、拍摄头像和上传资料图片
11. iOS 上架简要流程
iPhone App 上架主要通过 App Store Connect。
官方资源:
流程:
注册 Apple Developer Program
↓
创建 App ID
↓
配置证书和描述文件
↓
Xcode Archive 打包
↓
上传 App Store Connect
↓
TestFlight 测试
↓
填写 App 信息、截图、隐私说明
↓
提交审核
↓
审核通过后发布
四、Android 和 iPhone App 的区别
| 对比项 | Android App | iPhone / iOS App |
|---|---|---|
| 系统 | Android | iOS / iPadOS |
| 语言 | Kotlin / Java | Swift / Objective-C |
| 工具 | Android Studio | Xcode |
| UI 框架 | Jetpack Compose / XML | SwiftUI / UIKit |
| 设备适配 | 品牌多、尺寸多、系统版本复杂 | 设备较少、生态统一 |
| 应用发布 | Google Play + 国内各大应用商店 | App Store |
| 审核 | Google Play 和国内市场规则不同 | App Store 审核严格 |
| 难点 | 机型适配、权限、厂商差异、备案、软著 | 证书、签名、审核、订阅内购 |
| 打包格式 | APK / AAB | IPA |
| 推送 | FCM / 厂商推送 | APNs |
| 支付 | Google Play Billing / 微信 / 支付宝 | Apple IAP / Apple Pay |
| 开发成本 | 设备碎片化成本高 | 审核和证书管理要求高 |
五、跨平台 App 开发方案
1. Flutter
Flutter 是 Google 推出的跨平台 UI 框架,使用 Dart 语言。
官方文档:
适合:
| 场景 | 是否推荐 |
|---|---|
| 企业 App | 推荐 |
| 电商 App | 推荐 |
| 工具类 App | 推荐 |
| 动效复杂 App | 推荐 |
| 需要多端统一 UI | 推荐 |
| 高性能复杂项目 | 推荐 |
| 大量调用系统底层能力 | 中等,需要写原生插件 |
Flutter 示例:
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: Text("你好,Flutter App"),
),
),
);
}
}
2. React Native
React Native 适合已经会 React 的前端开发者。
官方文档:
适合:
| 场景 | 是否推荐 |
|---|---|
| 前端团队开发 App | 非常推荐 |
| 已经会 React | 非常推荐 |
| 快速开发 MVP | 推荐 |
| 中后台移动端 | 推荐 |
| 商城、资讯、社区类 App | 推荐 |
| 大型高性能游戏 | 不推荐 |
| 对原生能力依赖很深 | 谨慎 |
React Native 示例:
import React from 'react';
import { View, Text, Button, Alert } from 'react-native';
export default function App() {
return (
<View>
<Text>你好,React Native App</Text>
<Button title="点击我" onPress={() => Alert.alert('Hello')} />
</View>
);
}
3. uni-app
uni-app 更适合国内生态,尤其适合 Vue 开发者。
官方文档:
适合:
| 场景 | 是否推荐 |
|---|---|
| 小程序 | 非常推荐 |
| H5 | 推荐 |
| 简单 App | 推荐 |
| 企业内部应用 | 推荐 |
| 快速开发多端业务 | 推荐 |
| 高性能复杂 App | 不优先推荐 |
4. Kotlin Multiplatform
Kotlin Multiplatform 更适合共享业务逻辑,而不是简单理解为“一套 UI 到处跑”。
常见结构:
共享层:Kotlin 写接口、数据模型、业务逻辑
Android UI:Jetpack Compose
iOS UI:SwiftUI
适合:
大型团队
原生团队
希望共享业务逻辑
同时保持 Android / iOS 原生体验
5. 跨平台方案对比
| 方案 | 语言 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|---|
| Flutter | Dart | UI 表现强,性能好,跨端统一 | 要学 Dart,原生插件有门槛 | 想做高质量跨平台 |
| React Native | JS / TS | 前端友好,React 生态 | 原生依赖和版本问题较多 | React 前端 |
| uni-app | Vue | 国内生态好,小程序友好 | 高复杂 App 性能一般 | Vue 前端 |
| Kotlin Multiplatform | Kotlin | 共享业务逻辑,原生体验好 | 学习成本高 | 原生团队 |
| Hybrid WebView | HTML/CSS/JS | 迭代快 | 性能和体验受限制 | 活动页、内容页 |
六、前端开发者怎么选择 App 技术路线
如果你是前端开发工程师,可以这样选:
| 目标 | 推荐技术 |
|---|---|
| 快速做 App | React Native / uni-app |
| 想做高质量跨平台 App | Flutter |
| 已经会 Vue | uni-app |
| 已经会 React | React Native |
| 想深入 Android 原生 | Kotlin + Jetpack Compose |
| 想深入 iPhone 原生 | Swift + SwiftUI |
| 想找移动端原生岗位 | Kotlin + Swift |
| 想自己独立开发产品 | Flutter / React Native |
| 想做国内小程序 + App | uni-app |
| 想做复杂系统能力 | 原生 Android / iOS |
推荐学习顺序:
第一阶段:先理解 App 开发流程
第二阶段:选 React Native / Flutter / uni-app 之一入门
第三阶段:做一个完整项目
第四阶段:学习 Android 打包、签名、权限、上架
第五阶段:补 Android / iOS 原生能力
七、App 开发完整流程
一个完整 App 通常按这个流程开发:
1. 需求分析
2. 原型设计
3. UI 设计
4. 技术选型
5. 搭建项目
6. 开发页面
7. 封装网络请求
8. 登录注册
9. 状态管理
10. 本地存储
11. 权限处理
12. 接入推送 / 支付 / 地图 / 相机
13. 真机测试
14. 性能优化
15. 打包
16. 应用市场上架
17. 后续版本迭代
1. 需求分析
需要明确:
App 是给谁用
解决什么问题
核心功能有哪些
是否需要登录
是否需要支付
是否需要定位
是否需要推送
是否需要后台管理系统
是否需要 iOS 和 Android 双端
是否要上架国内市场或 Google Play
2. 原型设计
常用工具:
| 工具 | 用途 | 链接 |
|---|---|---|
| Figma | UI / 原型设计 | 打开链接 |
| 墨刀 | 产品原型 | 打开链接 |
| 即时设计 | 国产 UI 设计工具 | 打开链接 |
| Axure | 专业原型工具 | 打开链接 |
3. UI 设计
需要准备:
App 图标
启动图
首页设计
登录页
列表页
详情页
个人中心
空状态页面
错误状态页面
加载状态
深色模式适配
4. 技术开发
要完成:
搭建项目
配置路由
封装请求
封装组件
接入状态管理
开发业务页面
联调接口
处理权限
接入第三方 SDK
5. 测试
测试类型:
| 类型 | 说明 |
|---|---|
| 功能测试 | 功能是否正常 |
| 兼容测试 | 不同手机、系统版本是否正常 |
| UI 测试 | 页面是否错位 |
| 弱网测试 | 网络差时是否可用 |
| 权限测试 | 拒绝权限后是否崩溃 |
| 登录测试 | token 过期、退出登录、重复登录 |
| 支付测试 | 支付成功、失败、取消 |
| 性能测试 | 启动速度、列表滑动、内存占用 |
| 安全测试 | 敏感数据、接口、日志 |
八、App 项目必须掌握的核心模块
1. 页面开发
常见页面:
| 页面 | 功能 |
|---|---|
| 启动页 | 展示 Logo、初始化配置 |
| 引导页 | 新用户引导 |
| 登录页 | 手机号、验证码、密码登录 |
| 注册页 | 用户注册、协议勾选 |
| 首页 | Banner、列表、分类、推荐 |
| 搜索页 | 搜索记录、热门搜索 |
| 列表页 | 分页、刷新、筛选 |
| 详情页 | 商品、文章、视频详情 |
| 个人中心 | 用户信息、订单、设置 |
| 设置页 | 清除缓存、隐私政策、退出登录 |
2. 路由导航
App 也有“路由”。
前端中:
/login
/home
/detail/1
App 中:
LoginScreen
HomeScreen
DetailScreen
ProfileScreen
常见导航方式:
| 类型 | 说明 |
|---|---|
| 栈导航 | 页面一层一层打开 |
| Tab 导航 | 底部首页、分类、消息、我的 |
| 抽屉导航 | 左侧菜单 |
| Modal | 弹窗页面 |
| Deep Link | 外部链接打开 App 指定页面 |
3. 网络请求
App 和后端接口交互,例如:
POST /api/login
GET /api/user/info
GET /api/goods/list
GET /api/goods/detail
POST /api/order/create
POST /api/upload/avatar
要封装:
baseURL
请求头
token
请求拦截器
响应拦截器
错误统一处理
登录过期处理
loading
重试
超时
4. 登录注册
常见登录方式:
| 方式 | 说明 |
|---|---|
| 手机号 + 验证码 | 国内常见 |
| 账号 + 密码 | 传统方式 |
| 微信登录 | 国内常见 |
| Apple 登录 | iOS 常见 |
| Google 登录 | 海外常见 |
| Token 登录 | 前后端分离常见 |
登录流程:
用户输入账号密码
↓
请求登录接口
↓
后端返回 token
↓
App 保存 token
↓
后续接口请求携带 token
↓
token 过期后重新登录或刷新 token
5. 本地存储
| 类型 | Android | iOS | 用途 |
|---|---|---|---|
| 简单存储 | DataStore / SharedPreferences | UserDefaults | token、设置 |
| 数据库 | Room / SQLite | Core Data / SQLite | 聊天记录、离线数据 |
| 文件存储 | File | FileManager | 图片、缓存文件 |
| 安全存储 | Keystore | Keychain | 密码、敏感 token |
6. 权限处理
App 经常需要申请权限:
| 权限 | 用途 |
|---|---|
| 相机 | 拍照、扫码 |
| 相册 | 选择图片 |
| 定位 | 地图、附近门店 |
| 麦克风 | 录音、语音通话 |
| 蓝牙 | 设备连接 |
| 通知 | 消息推送 |
| 文件 | 上传、下载 |
关键原则:
不要一启动就申请所有权限
在用户使用对应功能时再申请
拒绝权限后给出友好提示
隐私政策中说明权限用途
7. 推送通知
常见推送服务:
| 平台 | 推送服务 |
|---|---|
| Android 海外 | Firebase Cloud Messaging |
| Android 国内 | 华为推送、小米推送、OPPO 推送、vivo 推送 |
| iOS | APNs |
| 第三方聚合 | 极光推送、个推、友盟 |
使用场景:
订单提醒
聊天消息
活动通知
系统公告
物流更新
课程提醒
8. 支付功能
常见支付方式:
| 地区 / 平台 | 支付方式 |
|---|---|
| 国内 Android | 微信支付、支付宝 |
| iOS 虚拟商品 | Apple In-App Purchase |
| Android 海外 | Google Play Billing |
| 海外 | Stripe、PayPal |
注意:
iOS 上卖会员、虚拟币、课程、数字内容等,通常要遵守 Apple 内购规则。
Android 上架 Google Play 时,数字商品通常要遵守 Google Play Billing 规则。
国内支付需要企业资质、商户号、支付回调、订单系统。
9. 图片、文件上传
常见流程:
用户选择图片
↓
申请相册 / 相机权限
↓
压缩图片
↓
上传到服务器或对象存储
↓
服务器返回 URL
↓
保存到业务数据中
常见问题:
| 问题 | 解决方案 |
|---|---|
| 图片太大 | 上传前压缩 |
| 上传失败 | 增加重试和错误提示 |
| 权限被拒 | 引导用户去系统设置打开 |
| Android 版本兼容问题 | 适配系统文件选择器和 Photo Picker |
10. WebView
WebView 用来在 App 中加载 H5 页面。
适合:
活动页
协议页
帮助中心
文章详情
营销落地页
注意:
不要把核心复杂功能全部塞进 WebView
注意 JSBridge 安全
注意 H5 页面移动端适配
注意 HTTPS
注意返回键处理
九、实际项目案例:商城 App
一个商城 App 通常包含:
首页
分类页
商品列表
商品详情
购物车
登录注册
个人中心
订单列表
支付
地址管理
搜索
收藏
消息通知
售后
优惠券
1. 页面模块拆分
| 模块 | 功能 |
|---|---|
| 首页 | Banner、推荐商品、活动入口 |
| 分类 | 一级分类、二级分类 |
| 商品列表 | 分页、筛选、排序 |
| 商品详情 | 图片轮播、价格、规格、评价 |
| 购物车 | 加减数量、选择商品、结算 |
| 登录 | 手机号、验证码、token |
| 订单 | 创建订单、支付、取消订单 |
| 地址 | 新增、编辑、删除收货地址 |
| 个人中心 | 用户信息、设置、退出登录 |
| 搜索 | 搜索历史、热门搜索、搜索结果 |
| 消息 | 订单通知、系统通知 |
2. 技术模块拆分
| 模块 | 内容 |
|---|---|
| 请求封装 | baseURL、token、错误处理 |
| 路由导航 | 首页、详情、登录拦截 |
| 状态管理 | 用户信息、购物车、主题 |
| 本地存储 | token、搜索记录、缓存 |
| 权限处理 | 相机、相册、通知 |
| 支付接入 | 微信、支付宝、Google Pay、Apple IAP |
| 推送接入 | 订单提醒、活动消息 |
| 性能优化 | 图片压缩、列表分页、缓存 |
| 异常监控 | 崩溃日志、接口错误 |
3. 商城 App 登录拦截逻辑
用户点击购物车 / 下单 / 个人中心
↓
判断本地是否有 token
↓
有 token:进入页面
↓
无 token:跳转登录页
↓
登录成功后返回原页面
十、Android 应用从申请到上线完整流程
Android 应用上线不是简单地“打个 APK 上传”。完整流程包括:
开发完成
↓
真机测试
↓
隐私合规检查
↓
准备应用资料
↓
准备 APP 备案 / 软著 / 特殊资质
↓
生成正式签名包
↓
注册开发者账号
↓
创建应用
↓
上传 APK / AAB
↓
填写应用信息
↓
填写权限、隐私、数据安全说明
↓
提交审核
↓
处理驳回问题
↓
审核通过
↓
正式上线
↓
监控崩溃、评论和数据
↓
版本迭代
1. Android 应用上线常见平台
| 平台 | 包格式 | 特点 |
|---|---|---|
| Google Play | AAB | 海外主流,规则标准化 |
| 华为应用市场 | APK | 国内主流渠道之一 |
| 小米应用商店 | APK | 小米 / Redmi 用户 |
| OPPO 软件商店 | APK | OPPO / 一加用户 |
| vivo 应用商店 | APK | vivo / iQOO 用户 |
| 应用宝 | APK | 腾讯系渠道 |
| 官网下载 | APK | 自主分发 |
| 企业内部分发 | APK | 企业内部使用 |
2. Google Play 和国内安卓市场差异
| 对比项 | Google Play | 国内安卓市场 |
|---|---|---|
| 包格式 | AAB 为主 | APK 为主 |
| 账号认证 | Google 开发者账号验证 | 个人 / 企业实名认证 |
| 审核重点 | Data Safety、目标 API、权限、内容政策 | 实名认证、备案、软著、隐私合规、权限 |
| 支付 | Google Play Billing | 微信、支付宝等 |
| 推送 | FCM | 各厂商推送 |
| 备案 | 通常不是 Google Play 重点 | 国内市场经常要求 |
| 软著 | 通常不是必需 | 国内市场常见要求 |
| 分发地区 | 全球 | 中国大陆设备生态 |
十一、上线前资料准备
1. 基础资料
| 资料 | 说明 |
|---|---|
| 应用名称 | 简短、易记、避免侵权 |
| 包名 | Android 唯一标识,例如 com.company.appname |
| 应用图标 | 高清图标,常见 512×512 |
| 应用截图 | 首页、核心功能页、登录页、个人中心等 |
| 应用简介 | 一句话说明 App 用途 |
| 应用详细描述 | 功能介绍、适用人群、特色 |
| 隐私政策链接 | 必须能公网访问 |
| 用户协议链接 | 建议准备 |
| 测试账号 | 如果需要登录,必须提供 |
| 联系方式 | 邮箱、手机号、官网 |
| 版本号 | versionName,例如 1.0.0 |
| 版本码 | versionCode,每次更新必须递增 |
2. 技术资料
| 资料 | 说明 |
|---|---|
| APK / AAB 安装包 | 国内市场多用 APK,Google Play 用 AAB |
| 签名文件 keystore | 正式包必须使用正式签名 |
| 包名 applicationId | 上架后不要随意改 |
| SHA-1 / SHA-256 指纹 | 登录、地图、支付、推送等 SDK 配置 |
| targetSdkVersion | 目标 Android API |
| minSdkVersion | 最低支持 Android 版本 |
| 权限清单 | 相机、相册、定位、通知等 |
| 第三方 SDK 清单 | 统计、广告、支付、推送、地图等 |
3. 合规资料
| 资料 | 是否常见必需 | 说明 |
|---|---|---|
| 隐私政策 | 必需 | 说明收集哪些数据、为什么收集、如何使用 |
| 用户协议 | 推荐 / 常见必需 | 说明用户使用规则 |
| APP 备案 | 国内通常需要 | 面向中国境内提供互联网信息服务的 App 常见要求 |
| 软件著作权 | 国内市场常见要求 | 证明软件归属 |
| ICP 备案 | 使用中国大陆服务器、网站或接口时常见 | |
| ICP 许可证 | 经营性互联网信息服务可能需要 | |
| 特殊行业资质 | 视业务而定 | 新闻、医疗、教育、金融、直播、游戏等 |
十二、开发者账号申请流程
1. Google Play Console 账号申请
官方入口:
申请流程:
准备 Google 账号
↓
进入 Google Play Console
↓
选择个人账号或组织账号
↓
填写开发者资料
↓
支付注册费用
↓
完成身份验证
↓
进入控制台创建应用
需要注意:
| 问题 | 说明 |
|---|---|
| 账号类型 | 个人开发者和组织开发者资料要求不同 |
| 身份验证 | 需要真实身份信息 |
| 付款方式 | 需要可用支付方式 |
| 开发者名称 | 会展示在 Google Play 商店页面 |
| 联系邮箱 | 用户和平台可能通过该邮箱联系你 |
| 账号安全 | 建议开启两步验证 |
2. 国内安卓应用市场账号申请
常见平台:
| 平台 | 官方入口 |
|---|---|
| 华为 AppGallery Connect | 打开链接 |
| 华为应用市场 | 打开链接 |
| 小米开发者平台 | 打开链接 |
| OPPO 开放平台 | 打开链接 |
| vivo 开放平台 | 打开链接 |
| 腾讯开放平台 / 应用宝 | 打开链接 |
通用申请流程:
注册开发者账号
↓
选择个人开发者或企业开发者
↓
提交实名认证资料
↓
等待认证审核
↓
认证通过
↓
创建应用
↓
上传 APK
↓
提交审核
3. 个人开发者常见资料
| 资料 | 说明 |
|---|---|
| 身份证 | 真实身份认证 |
| 手机号 | 接收验证码和审核通知 |
| 邮箱 | 接收平台通知 |
| 银行卡 | 涉及收益结算时需要 |
| 手持证件照 | 部分平台可能要求 |
4. 企业开发者常见资料
| 资料 | 说明 |
|---|---|
| 营业执照 | 企业主体认证 |
| 法人身份证 | 法人身份认证 |
| 联系人信息 | 平台对接联系人 |
| 对公账户 | 收益结算或认证使用 |
| 授权书 | 非法人操作时可能需要 |
| 软件著作权 | 应用归属证明 |
| 行业许可证 | 特殊行业需要 |
十三、APP 备案、软著、隐私政策与资质准备
1. APP 备案是什么
APP 备案是指面向中国境内提供互联网信息服务的 App,需要按照相关要求登记主体信息、应用信息、网络接入信息等。
可以简单理解为:
网站需要 ICP 备案
App 也可能需要 APP 备案
小程序、快应用等也可能涉及备案
官方和云服务商入口:
2. APP 备案流程
购买中国大陆服务器或使用接入服务
↓
进入云服务商备案系统
↓
填写主体信息
↓
填写 App 信息
↓
填写域名 / 接入信息
↓
上传证件资料
↓
云服务商初审
↓
短信核验
↓
通信管理局审核
↓
备案通过
↓
获得备案号
3. APP 备案常见问题
| 问题 | 解决方案 |
|---|---|
| 已有网站 ICP 备案,App 还要备案吗 | 通常仍需要补充 APP 备案信息,按市场和接入商要求处理 |
| App 没有后端接口,要备案吗 | 如果不提供互联网信息服务可能不需要;如果有联网、账号、内容服务,建议按平台要求处理 |
| 服务器在海外,要不要备案 | 中国大陆备案通常与大陆服务器接入有关,但国内市场可能仍要求备案或合规说明 |
| 备案信息和应用市场主体不一致 | 尽量保持主体一致,否则准备授权材料 |
| 备案号在哪里展示 | 通常在 App 内“设置 / 关于我们 / 隐私政策”页面展示 |
| 备案审核没通过 | 检查应用名称、主体信息、域名、接入信息、包名是否一致 |
4. 软件著作权是什么
软件著作权简称“软著”,用于证明软件归属权。
国内安卓市场中,以下情况经常会被要求提供软著:
| 场景 | 说明 |
|---|---|
| 企业正式产品 | 很多平台建议提供 |
| 金融、教育、医疗、工具类 | 审核更容易要求 |
| 包名、应用名称相似 | 需要证明归属 |
| 被平台判定疑似侵权 | 需要软著或授权证明 |
| 多个平台上架 | 提前准备更稳 |
5. 软著准备资料
| 资料 | 说明 |
|---|---|
| 软件名称 | 建议和 App 名称接近 |
| 版本号 | 一般写 V1.0 |
| 源代码 | 通常需要前后若干页 |
| 使用说明书 | 功能截图和说明 |
| 申请人资料 | 个人或公司资料 |
| 授权书 | 主体不一致时可能需要 |
6. 隐私政策怎么准备
隐私政策是 App 上架的核心材料。
建议包含:
1. 我们收集哪些信息
2. 为什么收集这些信息
3. 如何使用这些信息
4. 是否共享给第三方 SDK
5. 第三方 SDK 名称、用途、收集字段
6. 用户如何撤回授权
7. 用户如何注销账号
8. 用户如何删除个人信息
9. 未成年人保护说明
10. 联系方式
11. 隐私政策更新时间
7. 隐私政策常见问题
| 问题 | 解决方案 |
|---|---|
| 隐私政策链接打不开 | 使用 HTTPS,确保公网可访问 |
| App 内没有隐私政策入口 | 登录页、注册页、设置页、关于我们中添加入口 |
| 隐私政策没有写第三方 SDK | 列出所有 SDK 名称、公司、用途、收集信息、官网链接 |
| App 启动就申请权限 | 改为使用相关功能时再申请 |
| 未同意隐私政策就收集设备信息 | 首次启动先弹隐私协议并取得同意 |
| 权限用途写得太模糊 | 明确写“用于扫码登录”“用于上传头像”“用于附近门店推荐”等 |
8. 特殊行业资质
| 类型 | 可能需要的资质 |
|---|---|
| 新闻资讯 | 新闻信息服务相关资质 |
| 医疗健康 | 医疗器械、互联网医院、医疗信息服务资质等 |
| 金融借贷 | 金融牌照、备案、合规说明 |
| 教育培训 | 教育类资质、课程内容证明 |
| 游戏 | 游戏版号、防沉迷、隐私合规 |
| 直播 / 短视频 | 网络文化、视听节目、内容审核机制 |
| 电商 | 营业执照、平台规则、支付合规 |
| 社交交友 | 内容审核、举报机制、用户协议、未成年人保护 |
十四、Android 项目打包前检查
1. 检查包名
包名是 Android 应用的唯一标识。
示例:
namespace = "com.example.mall"
applicationId = "com.example.mall"
注意:
| 错误 | 后果 |
|---|---|
| 包名写成测试包名 | 上架后无法随意修改 |
| 不同市场包名不一致 | 更新、统计、推送容易出问题 |
| 包名和别人冲突 | 可能无法创建应用 |
| 包名包含敏感品牌 | 可能被判定侵权 |
建议格式:
com.公司名.应用名
com.zeng.mall
com.company.project
2. 检查版本号
Android 常用两个版本字段:
versionCode = 1
versionName = "1.0.0"
| 字段 | 作用 |
|---|---|
| versionCode | 给系统和应用市场判断版本高低,必须递增 |
| versionName | 展示给用户看的版本号 |
更新版本时:
versionCode = 2
versionName = "1.0.1"
常见问题:
| 问题 | 解决方案 |
|---|---|
| 上传新版本提示版本号过低 | 增加 versionCode |
| 版本名称显示不对 | 修改 versionName |
| 不同渠道版本混乱 | 建议建立版本发布表 |
3. 检查 targetSdkVersion
Google Play 对目标 API 有要求,新应用和应用更新需要满足目标 API 等级要求。
官方文档:
示例:
android {
compileSdk = 35
defaultConfig {
minSdk = 23
targetSdk = 35
}
}
常见问题:
| 问题 | 解决方案 |
|---|---|
| Google Play 提示 target API 太低 | 升级 compileSdk 和 targetSdk |
| 升级 targetSdk 后权限异常 | 检查 Android 运行时权限变化 |
| 升级后文件读写失败 | 适配分区存储、Photo Picker 等 |
| 通知不显示 | Android 13+ 需要通知权限 |
| 后台定位被拒 | 检查定位权限和后台定位声明 |
4. 检查权限
Android 权限在 AndroidManifest.xml 中声明。
示例:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
敏感权限:
| 权限 | 用途 |
|---|---|
| CAMERA | 拍照、扫码 |
| ACCESS_FINE_LOCATION | 精准定位 |
| ACCESS_COARSE_LOCATION | 模糊定位 |
| RECORD_AUDIO | 录音、语音 |
| READ_MEDIA_IMAGES | 读取图片 |
| READ_MEDIA_VIDEO | 读取视频 |
| POST_NOTIFICATIONS | 通知 |
| READ_CONTACTS | 通讯录 |
| QUERY_ALL_PACKAGES | 获取安装应用列表,审核非常严格 |
权限处理原则:
能不用就不用
能用系统选择器就不用读取全部文件权限
用户触发功能时再申请权限
权限说明要和实际功能一致
隐私政策要写清楚权限用途
5. 检查第三方 SDK
上线前整理一张 SDK 清单:
| SDK 名称 | 公司 | 用途 | 收集信息 | 官网 |
|---|---|---|---|---|
| 友盟统计 | 友盟 | 数据统计 | 设备信息、使用数据 | 打开链接 |
| 高德地图 | 高德 | 地图定位 | 定位信息、设备信息 | 打开链接 |
| 微信开放平台 SDK | 腾讯 | 微信登录、分享、支付 | 账号信息、设备信息 | 打开链接 |
| 支付宝开放平台 SDK | 支付宝 | 支付 | 支付相关信息 | 打开链接 |
| Firebase SDK | 崩溃、推送、统计 | 设备信息、崩溃数据 | 打开链接 |
审核常见问题:
| 问题 | 解决方案 |
|---|---|
| SDK 违规收集信息 | 升级 SDK,关闭不必要采集 |
| 隐私政策没写 SDK | 添加 SDK 清单 |
| 用户未同意前 SDK 初始化 | 延迟初始化,用户同意后再初始化 |
| SDK 版本过旧 | 升级到平台推荐版本 |
| SDK 请求权限但功能不用 | 移除 SDK 或关闭相关能力 |
十五、签名、APK、AAB 详细讲解
1. 什么是签名
Android App 必须签名才能安装和更新。签名可以理解为 App 的身份证。
官方文档:
如果两个安装包签名不一致:
同一个包名不能覆盖安装
用户无法正常升级
应用市场可能拒绝更新
第三方登录、地图、支付可能失效
2. Debug 签名和 Release 签名
| 类型 | 用途 |
|---|---|
| Debug 签名 | 开发调试用 |
| Release 签名 | 正式上线用 |
不要用 Debug 包上架。
3. keystore 是什么
keystore 是保存签名密钥的文件。
示例文件:
my-release-key.jks
生成签名文件示例:
keytool -genkey -v \
-keystore my-release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias my-key-alias
需要保存的信息:
keystore 文件
keystore 密码
key alias
key password
重要提醒:
正式签名文件一定要备份
密码一定要保存
不要上传到 Git 仓库
不要发给无关人员
4. APK 和 AAB 区别
官方文档:
| 格式 | 说明 | 常见使用场景 |
|---|---|---|
| APK | Android 安装包,可直接安装 | 国内安卓市场、官网下载、企业内部分发 |
| AAB | Android App Bundle,Google Play 发布格式 | Google Play |
APK 特点:
可以直接安装
国内市场支持广
适合企业内部分发
适合官网下载
AAB 特点:
Google Play 会根据设备生成合适 APK
包体更小
支持动态功能模块
适合全球分发
5. Android Studio 打正式包流程
生成 APK:
Android Studio
↓
Build
↓
Generate Signed Bundle / APK
↓
选择 APK
↓
选择 keystore
↓
填写密码和 alias
↓
选择 release
↓
Finish
生成 AAB:
Android Studio
↓
Build
↓
Generate Signed Bundle / APK
↓
选择 Android App Bundle
↓
选择 keystore
↓
选择 release
↓
Finish
6. Gradle 命令打包
生成 Release APK:
./gradlew assembleRelease
生成 Release AAB:
./gradlew bundleRelease
Windows:
gradlew assembleRelease
gradlew bundleRelease
打包产物常见路径:
app/build/outputs/apk/release/
app/build/outputs/bundle/release/
十六、Google Play 上架完整流程
1. 创建应用
官方文档:
流程:
进入 Play Console
↓
点击 Create app
↓
填写 App name
↓
选择默认语言
↓
选择 App 或 Game
↓
选择免费或付费
↓
勾选声明
↓
创建应用
2. 填写商店详情
需要填写:
| 内容 | 说明 |
|---|---|
| 应用名称 | 商店展示名称 |
| 简短描述 | 一句话介绍 |
| 完整描述 | 详细功能介绍 |
| 图标 | 高质量图标 |
| Feature Graphic | 商店横幅图 |
| 手机截图 | 展示核心页面 |
| 平板截图 | 如果支持平板,建议上传 |
| 分类 | 工具、教育、购物、生活等 |
| 联系方式 | 邮箱、网站、电话 |
| 隐私政策 | 必须是可访问链接 |
3. 配置 App Content
官方文档:
常见需要填写:
| 项目 | 说明 |
|---|---|
| 隐私政策 | 填写隐私政策 URL |
| Ads | 是否包含广告 |
| App access | 是否需要登录账号 |
| Target audience | 目标用户年龄 |
| Content rating | 内容分级问卷 |
| Data safety | 数据收集和共享说明 |
| Permissions declaration | 敏感权限声明 |
| Financial features | 金融功能声明 |
| Health apps | 健康类应用声明 |
| News apps | 新闻类应用声明 |
4. 上传 AAB
流程:
Production / Testing
↓
Create new release
↓
Upload AAB
↓
填写 Release notes
↓
Review release
↓
Start rollout
建议先走测试轨道:
| 测试类型 | 用途 |
|---|---|
| Internal testing | 内部快速测试 |
| Closed testing | 邀请部分用户测试 |
| Open testing | 公开测试 |
| Production | 正式发布 |
5. 提交审核前检查
商店详情是否完整
隐私政策是否可打开
测试账号是否能登录
数据安全表是否和实际一致
权限声明是否合理
AAB 是否正式签名
目标 API 是否满足要求
是否有崩溃问题
6. Google Play 常见驳回原因
| 驳回原因 | 解决方案 |
|---|---|
| 隐私政策缺失或打不开 | 提供 HTTPS 可访问链接 |
| 数据安全表和实际不一致 | 按 SDK 和接口真实填写 |
| 权限用途不合理 | 删除非必要权限或补充声明 |
| App 需要登录但没给测试账号 | 在 App access 提供账号密码和操作说明 |
| 应用崩溃 | 使用 Play Console 崩溃日志、Firebase Crashlytics 排查 |
| 目标 API 不符合要求 | 升级 targetSdk |
| 包名、签名、版本号问题 | 检查 applicationId、keystore、versionCode |
| 内容分级不准确 | 重新填写内容分级问卷 |
| 侵犯品牌或版权 | 修改名称、图标、素材,提供授权证明 |
| 付款方式违规 | 数字商品遵守 Google Play Billing 规则 |
十七、国内安卓应用市场上架流程
国内安卓市场包括华为、小米、OPPO、vivo、应用宝等。不同平台后台不同,但核心流程类似。
1. 华为应用市场流程
官方文档:
流程:
注册华为开发者账号
↓
实名认证
↓
进入 AppGallery Connect
↓
新建 Android 应用
↓
填写应用基础信息
↓
上传 APK
↓
填写分发国家/地区
↓
填写隐私声明链接
↓
提交审核
↓
审核通过后上架
注意点:
应用名称、包名、签名要一致
隐私政策必须能访问
如果接入华为推送、地图、登录等能力,需要配置证书指纹
应用截图要符合规范
敏感行业要提供资质
2. 小米应用商店流程
官方文档:
流程:
注册小米开发者账号
↓
完成开发者认证
↓
创建应用
↓
填写应用名称和包名
↓
上传 APK
↓
系统读取包名、版本号、应用名称
↓
填写应用分类、简介、截图、隐私政策
↓
提交审核
↓
审核通过后发布
注意点:
包名不要填错
版本号要递增
应用截图不要带其他商店水印
隐私政策要和 App 内展示一致
如果 APK 较大,按平台要求使用对应上传方式
3. OPPO 应用商店流程
官方文档:
流程:
注册 OPPO 开放平台账号
↓
完成开发者认证
↓
进入管理中心
↓
产品列表
↓
移动应用列表
↓
创建应用
↓
创建包名
↓
上传 APK
↓
完善资料
↓
提交审核
↓
发布上线
注意点:
应用包名创建后要和 APK 一致
应用资料需要完整
隐私政策、权限说明、备案信息要完善
不得包含违规内容、诱导下载、虚假功能
4. vivo 应用商店流程
官方入口:
流程:
注册 vivo 开放平台账号
↓
实名认证
↓
创建应用
↓
上传 APK
↓
填写应用基础资料
↓
填写隐私政策和资质信息
↓
提交审核
↓
审核通过后上架
注意点:
vivo 对审核规范、隐私合规、应用内容、权限使用都比较关注
如果涉及广告、下载、金融、医疗、教育等内容,要提前准备说明和资质
5. 应用宝流程
官方入口:
流程:
注册腾讯开放平台账号
↓
开发者认证
↓
创建移动应用
↓
填写应用资料
↓
上传 APK
↓
填写隐私政策和资质信息
↓
提交审核
↓
审核通过后上架应用宝
6. 国内市场通用审核重点
| 审核项 | 说明 |
|---|---|
| 账号主体 | 是否实名认证 |
| 应用名称 | 是否侵权、夸大、涉敏 |
| 包名 | 是否唯一、是否和 APK 一致 |
| 签名 | 是否为正式签名 |
| 版本号 | 是否递增 |
| 隐私政策 | 是否完整、是否可访问 |
| 权限 | 是否过度申请 |
| SDK | 是否违规采集信息 |
| APP 备案 | 是否填写备案信息 |
| 软著 | 是否能证明应用归属 |
| 特殊资质 | 是否符合行业要求 |
| 功能完整性 | 是否能正常使用 |
| 登录账号 | 审核员是否能进入核心功能 |
| 内容安全 | 是否有违规内容 |
| 广告 | 是否欺骗点击、诱导下载、影响体验 |
十八、审核常见问题与解决方案
1. 隐私政策问题
问题表现:
隐私政策链接无法访问
隐私政策内容不完整
隐私政策没有写第三方 SDK
隐私政策和 App 实际权限不一致
App 内找不到隐私政策入口
解决方案:
1. 使用 HTTPS 链接
2. 确保不需要登录即可访问
3. 在 App 登录页、注册页、设置页加入隐私政策入口
4. 列出所有第三方 SDK
5. 写清楚每个权限的具体用途
6. 写清楚用户注销账号、删除信息、撤回授权方式
2. 权限过度申请
问题表现:
普通工具 App 申请通讯录权限
不需要定位却申请精准定位
不需要读取全部图片却申请相册权限
启动 App 就申请相机、定位、存储等权限
解决方案:
1. 删除不必要权限
2. 改为用户点击功能时再申请
3. Android 13+ 图片视频尽量使用系统 Photo Picker
4. 权限弹窗前给用户解释用途
5. 隐私政策中同步更新权限说明
3. 测试账号问题
问题表现:
审核员无法登录
验证码登录无法收到验证码
登录后没有测试数据
核心功能需要会员或付费
解决方案:
1. 提供固定测试账号和密码
2. 不要只支持短信验证码登录
3. 给测试账号配置完整权限
4. 在审核备注写清楚操作路径
5. 如果有后台审核功能,提供测试后台或模拟数据
审核备注示例:
测试账号:test@example.com
密码:Test123456
登录路径:首页 → 我的 → 登录
测试说明:该账号已开通会员权限,可测试课程播放、收藏、评论等功能。
4. 应用崩溃或白屏
常见原因:
接口地址写错
正式环境证书错误
混淆导致类找不到
缺少网络权限
低版本 Android 兼容问题
WebView 加载失败
第三方 SDK 初始化失败
解决方案:
1. 使用正式包在多台真机测试
2. 测试 Android 8、10、12、13、14、15 等系统
3. 检查 ProGuard / R8 混淆规则
4. 接入崩溃监控
5. 检查接口 HTTPS 证书
6. 检查 WebView 页面是否支持移动端
7. 检查权限是否动态申请
5. 签名不一致
问题表现:
新版本无法覆盖安装
应用市场提示签名与旧版本不一致
第三方登录、支付、地图功能失效
解决方案:
1. 找回原 keystore
2. 检查 alias 和密码是否正确
3. 不要用 debug keystore 打正式包
4. 不同渠道使用同一正式签名
5. Google Play 使用 Play App Signing 时区分 upload key 和 app signing key
6. 版本号问题
问题表现:
上传失败,提示版本号过低
用户收不到更新
同一个版本重复上传失败
解决方案:
1. 每次提交都增加 versionCode
2. versionName 按语义化版本管理
3. 建立版本发布记录表
4. 多渠道包保持版本规则一致
版本示例:
| 发布次数 | versionCode | versionName |
|---|---|---|
| 首次发布 | 1 | 1.0.0 |
| 修复 bug | 2 | 1.0.1 |
| 新增功能 | 3 | 1.1.0 |
| 大版本升级 | 10 | 2.0.0 |
7. 软著或资质问题
问题表现:
平台要求上传软著
应用名称疑似侵权
涉及金融、医疗、教育等特殊类目
企业主体和软著主体不一致
解决方案:
1. 提前申请软件著作权
2. 应用名称和软著名称尽量一致
3. 如果主体不一致,准备授权书
4. 特殊行业提前准备许可证或备案材料
5. 不要使用知名品牌、影视、明星、商标素材
8. APP 备案问题
问题表现:
平台要求填写 APP 备案号
备案主体和开发者主体不一致
备案信息和应用信息不一致
备案还在审核中
解决方案:
1. 提前通过云服务商或接入商提交备案
2. 应用名称、主体、域名尽量保持一致
3. 在 App 内展示备案号
4. 隐私政策和关于我们页面同步备案信息
5. 如果主体不同,准备授权证明
9. 第三方 SDK 违规
问题表现:
未同意隐私政策前 SDK 已收集设备信息
SDK 获取 IMEI、MAC、Android ID 等敏感信息
SDK 申请了多余权限
隐私政策没有列 SDK
解决方案:
1. 升级 SDK 到合规版本
2. 用户同意隐私政策后再初始化 SDK
3. 关闭非必要采集开关
4. 隐私政策增加 SDK 清单
5. 删除不用的 SDK
6. 使用平台检测工具扫描 APK
10. 图标、截图、描述问题
问题表现:
截图和实际功能不一致
截图带其他应用市场水印
图标模糊
描述包含违规词
夸大宣传收益、疗效、功能
解决方案:
1. 使用真实 App 截图
2. 不使用竞品、平台、水印内容
3. 图标使用高清尺寸
4. 描述避免“最强、稳赚、官方、第一”等敏感夸张词
5. 截图展示核心功能,不放无关宣传图
十九、上线后的版本更新流程
上线后还要持续维护。
1. 常规更新流程
收集用户反馈
↓
修复 bug / 新增功能
↓
修改 versionCode 和 versionName
↓
生成新正式包
↓
内部测试
↓
上传应用市场
↓
填写更新说明
↓
提交审核
↓
灰度发布
↓
正式全量发布
2. 更新说明怎么写
不推荐:
修复了一些问题。
推荐:
1. 优化首页加载速度
2. 修复部分机型上传头像失败的问题
3. 新增订单筛选功能
4. 优化登录体验
3. 灰度发布
灰度发布是先让一部分用户升级,观察是否有问题。
适合:
大版本更新
支付功能更新
登录体系更新
底层 SDK 更新
性能优化版本
如果发现崩溃升高,可以暂停发布,修复后再继续。
4. 上线后要监控什么
| 指标 | 说明 |
|---|---|
| 崩溃率 | 是否有大量闪退 |
| ANR | 是否卡死 |
| 登录成功率 | 是否登录失败 |
| 支付成功率 | 是否支付异常 |
| 接口错误率 | 后端接口是否稳定 |
| 用户评论 | 是否有明显投诉 |
| 卸载率 | 是否更新后大量卸载 |
| 权限拒绝率 | 用户是否不愿授权 |
| 活跃用户 | DAU、MAU |
| 留存率 | 次日留存、7 日留存、30 日留存 |
二十、上线前检查清单
1. 技术检查
- App 能正常安装
- 正式包不是 Debug 包
- 使用正式签名
- versionCode 已递增
- versionName 正确
- 包名正确
- targetSdk 符合目标市场要求
- 首次启动不崩溃
- 登录注册正常
- 主要接口正常
- 图片、文件上传正常
- 支付功能正常
- 推送功能正常
- WebView 页面正常
- Android 低版本兼容正常
- Android 高版本权限适配正常
- 混淆后功能正常
2. 合规检查
- 隐私政策可访问
- App 内有隐私政策入口
- 用户协议可访问
- 首次启动有隐私弹窗
- 用户同意前不初始化敏感 SDK
- 第三方 SDK 清单完整
- 权限用途说明清楚
- 有账号注销入口
- 有个人信息删除或联系客服方式
- APP 备案信息准备完成
- 软著准备完成
- 特殊行业资质准备完成
- 未成年人相关说明完善
3. 应用市场资料检查
- 应用名称正确
- 应用图标高清
- 应用截图清晰
- 简短描述准确
- 详细描述不夸大
- 分类选择正确
- 联系邮箱可用
- 官网或隐私政策链接可访问
- 审核测试账号可登录
- 审核备注写清楚
- APK / AAB 上传正确
- 更新说明填写完整
二十一、官方资源和文档链接表
1. Android 官方资源
| 资源 | 说明 | 链接 |
|---|---|---|
| Android Developers | Android 官方开发文档 | 打开链接 |
| Android Studio | Android 官方开发工具 | 打开链接 |
| Jetpack Compose | Android 现代 UI 工具包 | 打开链接 |
| Compose 入门文档 | Compose 官方学习入口 | 打开链接 |
| Android App Architecture | Android 应用架构指南 | 打开链接 |
| Android App Bundle | AAB 官方说明 | 打开链接 |
| App Bundle 格式 | AAB 文件格式说明 | 打开链接 |
| 构建和测试 AAB | AAB 测试指南 | 打开链接 |
| 上传 App Bundle | 上传 AAB 到 Play Console | 打开链接 |
| 应用签名 | Android 签名官方文档 | 打开链接 |
2. iOS / Apple 官方资源
| 资源 | 说明 | 链接 |
|---|---|---|
| Apple Developer | Apple 开发者官网 | 打开链接 |
| Xcode | Apple 官方开发工具 | 打开链接 |
| Swift 官方文档 | Swift 语言文档 | 打开链接 |
| SwiftUI 官方文档 | SwiftUI 框架文档 | 打开链接 |
| UIKit 官方文档 | UIKit 框架文档 | 打开链接 |
| App Store Connect | iOS 应用上架后台 | 打开链接 |
| 提交 App 到 App Store | Apple 上架说明 | 打开链接 |
| TestFlight | Apple 内测工具 | 打开链接 |
3. 跨平台官方资源
| 资源 | 说明 | 链接 |
|---|---|---|
| Flutter 官网 | Flutter 官方网站 | 打开链接 |
| Flutter 文档 | Flutter 官方文档 | 打开链接 |
| Dart 文档 | Dart 语言文档 | 打开链接 |
| React Native 官网 | React Native 官方网站 | 打开链接 |
| React Native 入门 | React Native 官方入门 | 打开链接 |
| React Native 环境搭建 | React Native 环境配置 | 打开链接 |
| uni-app 文档 | uni-app 官方文档 | 打开链接 |
| Kotlin Multiplatform | Kotlin 跨平台文档 | 打开链接 |
4. Google Play 官方资源
| 资源 | 说明 | 链接 |
|---|---|---|
| Google Play Console | Google Play 发布后台 | 打开链接 |
| 开始使用 Play Console | 开发者账号设置 | 打开链接 |
| 创建并设置应用 | Google Play 创建应用流程 | 打开链接 |
| 准备应用审核 | App content 审核准备 | 打开链接 |
| 数据安全表 | Data Safety 填写说明 | 打开链接 |
| 权限声明 | 敏感权限声明说明 | 打开链接 |
| 目标 API 要求 | Target SDK 官方要求 | 打开链接 |
| Play Console 目标 API 要求 | Google Play 帮助中心说明 | 打开链接 |
5. 国内安卓应用市场官方文档
| 平台 | 说明 | 链接 |
|---|---|---|
| 华为 AppGallery Connect | 华为应用管理后台 | 打开链接 |
| 华为应用市场接入 | 华为应用分发入口 | 打开链接 |
| 华为发布 APK 应用 | 华为 APK 发布文档 | 打开链接 |
| 华为创建 Android 应用 | 华为创建应用文档 | 打开链接 |
| 华为应用审核指南 | 华为审核规范 | 打开链接 |
| 小米开发者平台 | 小米应用商店开发者平台 | 打开链接 |
| 小米应用提交流程 | 小米应用上架流程 | 打开链接 |
| 小米应用创建指南 | 小米创建和提交审核说明 | 打开链接 |
| OPPO 开放平台 | OPPO 应用发布平台 | 打开链接 |
| OPPO 开发者平台 | OPPO 官方开发平台 | 打开链接 |
| vivo 开放平台 | vivo 应用发布平台 | 打开链接 |
| vivo 创建应用文档 | vivo 创建应用说明 | 打开链接 |
| vivo 应用审核规范 | vivo 审核规范 | 打开链接 |
| 腾讯开放平台 | 应用宝相关入口 | 打开链接 |
6. APP 备案和云服务商文档
| 资源 | 说明 | 链接 |
|---|---|---|
| 工信部备案系统 | 备案查询和管理入口 | 打开链接 |
| 阿里云 APP 备案 | 阿里云 APP 备案流程 | 打开链接 |
| 阿里云 ICP 备案流程 | 阿里云备案流程说明 | 打开链接 |
| 腾讯云 APP 备案 FAQ | 腾讯云 APP 备案常见问题 | 打开链接 |
| 腾讯云首次备案 | 腾讯云 ICP / APP 备案流程 | 打开链接 |
7. 推荐辅助工具
| 工具 | 用途 | 链接 |
|---|---|---|
| Android Studio | Android 开发与打包 | 打开链接 |
| Xcode | iOS 开发与打包 | 打开链接 |
| Firebase Crashlytics | 崩溃监控 | 打开链接 |
| Firebase App Distribution | 测试分发 | 打开链接 |
| Google Play Console | Google Play 上架管理 | 打开链接 |
| Postman | 接口测试 | 打开链接 |
| Figma | UI 设计协作 | 打开链接 |
| IconKitchen | Android 图标生成 | 打开链接 |
| App Store Connect | iOS 应用管理 | 打开链接 |
二十二、推荐学习路线
1. 前端开发者推荐路线
HTML / CSS / JavaScript 基础
↓
Vue 或 React 熟练
↓
了解 App 页面、路由、状态、权限、打包
↓
选择 React Native / Flutter / uni-app
↓
做一个完整项目
↓
学习 Android 打包、签名、上架
↓
补 Kotlin + Jetpack Compose
↓
补 Swift + SwiftUI
2. Vue 开发者路线
Vue3
↓
TypeScript
↓
uni-app
↓
小程序 / H5 / App 打包
↓
Android APK 签名
↓
国内应用市场上架
↓
原生插件开发
3. React 开发者路线
React
↓
TypeScript
↓
React Native
↓
Expo 或 React Native CLI
↓
导航、状态管理、网络请求
↓
Android / iOS 打包
↓
应用市场上架
4. Flutter 路线
Dart
↓
Flutter Widget
↓
页面布局
↓
路由导航
↓
网络请求
↓
状态管理
↓
本地存储
↓
原生插件
↓
Android / iOS 双端上线
5. Android 原生路线
Kotlin 基础
↓
Android Studio
↓
Activity / Lifecycle
↓
Jetpack Compose
↓
ViewModel
↓
Navigation
↓
Retrofit / OkHttp
↓
Room / DataStore
↓
权限处理
↓
打包签名
↓
Google Play / 国内市场上架
6. iOS 原生路线
Swift 基础
↓
Xcode
↓
SwiftUI
↓
NavigationStack
↓
状态管理
↓
URLSession
↓
UserDefaults / Core Data / Keychain
↓
权限处理
↓
TestFlight
↓
App Store 上架
7. 推荐练手项目
| 项目 | 能练到什么 |
|---|---|
| 记账 App | 本地存储、图表、分类 |
| 商城 App | 登录、列表、详情、购物车、支付 |
| 短视频展示 App | 视频播放、列表性能、缓存 |
| 笔记 App | 富文本、本地数据库、同步 |
| 天气 App | 网络请求、定位、权限 |
| 后台管理移动端 | 表单、权限、接口封装 |
| 个人作品集 App | 页面开发、导航、打包发布 |
| 课程学习 App | 视频、登录、收藏、进度记录 |
二十三、总结建议
如果你是前端开发工程师,建议路线是:
第一步:先理解 App 开发整体流程
第二步:选择 React Native / Flutter / uni-app 入门
第三步:做一个完整项目
第四步:学习 Android 打包、签名、权限、上架
第五步:再补 Android / iOS 原生能力
最实用组合:
React Native + TypeScript + Android 上架流程
或者:
Flutter + Dart + Android / iOS 双端发布
如果你以后要独立开发并发布 App,必须重点掌握:
1. 包名不要乱改
2. 正式签名文件必须保存好
3. versionCode 每次更新必须递增
4. 隐私政策必须完整且可访问
5. 权限能少申请就少申请
6. 第三方 SDK 要列清楚
7. 国内市场提前准备 APP 备案和软著
8. Google Play 重点关注 AAB、Data Safety、目标 API、权限声明
9. 提交审核前必须提供可用测试账号
10. 上线后要持续监控崩溃、评论、下载和转化数据
App 开发不是只写页面,也不是只会打包。真正完整的 App 开发能力包括:
产品理解
+
UI 页面开发
+
接口联调
+
状态管理
+
权限处理
+
本地存储
+
推送支付地图等 SDK
+
性能优化
+
打包签名
+
应用市场审核
+
隐私合规
+
版本迭代
把这些流程打通后,你就能从“会写前端页面”升级到“能独立完成 App 项目开发与上线”的开发者。
更多推荐

所有评论(0)