App 开发完整指南:Android、iPhone/iOS、跨平台开发与 Android 应用从申请到上线全流程

适合对象:前端开发工程师、移动端初学者、独立开发者、准备开发并上架 Android App / iPhone App 的开发者。
更新时间:2026 年 6 月。
说明:本文把 App 开发基础知识、Android 原生开发、iPhone/iOS 原生开发、跨平台开发、完整项目流程、Android 应用从申请到上线流程、常见审核问题与解决方案、官方资源链接 全部整合到一起。
注意:应用市场规则会持续变化,正式提交前请以各平台最新官方文档为准。


目录

  1. 一、App 开发到底是什么
  2. 二、Android App 开发详细讲解
  3. 三、iPhone / iOS App 开发详细讲解
  4. 四、Android 和 iPhone App 的区别
  5. 五、跨平台 App 开发方案
  6. 六、前端开发者怎么选择 App 技术路线
  7. 七、App 开发完整流程
  8. 八、App 项目必须掌握的核心模块
  9. 九、实际项目案例:商城 App
  10. 十、Android 应用从申请到上线完整流程
  11. 十一、上线前资料准备
  12. 十二、开发者账号申请流程
  13. 十三、APP 备案、软著、隐私政策与资质准备
  14. 十四、Android 项目打包前检查
  15. 十五、签名、APK、AAB 详细讲解
  16. 十六、Google Play 上架完整流程
  17. 十七、国内安卓应用市场上架流程
  18. 十八、审核常见问题与解决方案
  19. 十九、上线后的版本更新流程
  20. 二十、上线前检查清单
  21. 二十一、官方资源和文档链接表
  22. 二十二、推荐学习路线
  23. 二十三、总结建议

一、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 Google 崩溃、推送、统计 设备信息、崩溃数据 打开链接

审核常见问题:

问题 解决方案
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 项目开发与上线”的开发者。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐