80 - 安卓与 iOS APP 开发全流程及上架指南

适用人群:想开发并发布手机APP的开发者
难度:中等
预计阅读时间:30分钟

一、开发前准备

1.1 明确需求与技术选型

在开始编码之前,需要先回答三个问题:

问题选项建议
目标平台?仅Android / 仅iOS / 双平台双平台优先选跨平台方案
团队情况?个人 / 小团队 / 大团队个人和小团队选跨平台
应用类型?纯展示 / 社交 / 工具 / 游戏游戏选Unity,其他选框架

1.2 技术方案对比

方案语言双平台性能开发效率适用场景
<strong>Flutter</strong>Dart通用APP,推荐首选
<strong>React Native</strong>JavaScript中高前端团队转移动端
<strong>uni-app</strong>Vue.js极高国内项目,小程序联动
<strong>Swift + SwiftUI</strong>Swift仅iOS极高纯iOS应用
<strong>Kotlin + Compose</strong>Kotlin仅Android极高纯Android应用
<strong>原生双端</strong>Swift + Kotlin极高大厂,性能要求极高
<strong>Unity</strong>C#游戏,3D应用
新手推荐:Flutter(双平台一套代码,性能好,社区活跃) 国内项目推荐:uni-app(可同时生成小程序,生态成熟)

1.3 开发环境搭建

Flutter 环境

# 1. 安装Flutter SDK
# 下载:https://docs.flutter.dev/get-started/install
# Windows: 下载zip解压,配置PATH
# macOS: brew install flutter

# 2. 验证安装
flutter doctor

# 3. 配置国内镜像(重要!)
# Windows 设置环境变量:
# PUB_HOSTED_URL=https://pub.flutter-io.cn
# FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# macOS ~/.zshrc 添加:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# 4. 创建项目
flutter create my_app
cd my_app
flutter run

Android 开发环境

步骤:
1. 下载安装 Android Studio
   https://developer.android.com/studio
   
2. 打开 Android Studio → SDK Manager
   安装:
   - Android SDK (最新稳定版,如 API 34)
   - Android SDK Build-Tools
   - Android SDK Platform-Tools
   - Android Emulator
   
3. 配置 ANDROID_HOME 环境变量
   Windows: C:\Users\你的用户名\AppData\Local\Android\Sdk
   macOS: ~/Library/Android/sdk
   
4. 创建模拟器
   Android Studio → Device Manager → Create Virtual Device
   选择 Pixel 7 → 下载系统镜像 → 完成

5. 连接真机(推荐)
   手机开启「开发者选项」→「USB调试」
   USB连接电脑,确认授权

iOS 开发环境(需要Mac)

步骤:
1. 安装 Xcode(App Store搜索安装)
   版本要求:最新稳定版
   
2. 打开 Xcode → Preferences → Locations
   确认 Command Line Tools 已选择
   
3. 安装 CocoaPods(iOS依赖管理)
   sudo gem install cocoapods
   
4. 注册 Apple Developer 账号
   个人账号:$99/年(约688元)
   企业账号:$299/年
   注册地址:https://developer.apple.com/programs/
   
5. 创建模拟器
   Xcode → Window → Devices and Simulators
   或直接在 Xcode 顶部选择模拟器


二、APP 开发流程

2.1 项目结构(Flutter示例)

my_app/
├── lib/
│   ├── main.dart              # 入口文件
│   ├── app.dart               # 应用配置(路由、主题)
│   ├── pages/                 # 页面
│   │   ├── home/
│   │   │   └── home_page.dart
│   │   ├── login/
│   │   │   └── login_page.dart
│   │   └── profile/
│   │       └── profile_page.dart
│   ├── widgets/               # 公共组件
│   │   ├── app_bar.dart
│   │   └── loading.dart
│   ├── services/              # 网络请求
│   │   ├── api_client.dart
│   │   └── user_service.dart
│   ├── models/                # 数据模型
│   │   └── user.dart
│   ├── providers/             # 状态管理
│   │   └── auth_provider.dart
│   └── utils/                 # 工具函数
│       ├── constants.dart
│       └── storage.dart
├── assets/                    # 静态资源
│   ├── images/
│   └── fonts/
├── android/                   # Android原生代码
├── ios/                       # iOS原生代码
├── pubspec.yaml               # 依赖配置
└── test/                      # 测试

2.2 核心开发步骤

阶段1:基础框架搭建(1-2周)
├── 路由配置(页面导航)
├── 网络请求封装(Dio/HTTP)
├── 状态管理(Provider/Riverpod/Bloc)
├── 本地存储(SharedPreferences/SQLite)
├── 主题与样式统一
└── 错误处理与日志

阶段2:核心页面开发(2-4周)
├── 启动页/引导页
├── 登录注册(手机号/微信/Apple ID)
├── 首页(列表/搜索/Tab切换)
├── 详情页
├── 个人中心
└── 设置页

阶段3:功能完善(1-2周)
├── 推送通知(极光/个推/FCM)
├── 分享功能(微信/微博)
├── 支付功能(微信支付/支付宝)
├── 图片选择与上传
├── 地图与定位
└── 版本更新检查

阶段4:测试与优化(1周)
├── 功能测试
├── 性能测试(启动速度/内存/FPS)
├── 兼容性测试(不同机型/系统版本)
├── UI适配(刘海屏/折叠屏)
└── 网络异常处理

2.3 常用依赖(Flutter)

# pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  
  # 网络请求
  dio: ^5.4.0
  
  # 状态管理
  provider: ^6.1.0
  # 或 riverpod: ^2.4.0
  # 或 flutter_bloc: ^8.1.0
  
  # 本地存储
  shared_preferences: ^2.2.0
  sqflite: ^2.3.0
  
  # 路由
  go_router: ^13.0.0
  
  # UI组件
  cached_network_image: ^3.3.0
  flutter_screenutil: ^5.9.0  # 屏幕适配
  pull_to_refresh: ^2.0.0     # 下拉刷新
  
  # 工具
  url_launcher: ^6.2.0
  share_plus: ^7.2.0
  image_picker: ^1.0.0
  package_info_plus: ^5.0.0
  
  # 推送
  jpush_flutter: ^2.5.0  # 极光推送
  
  # 微信SDK
  fluwx: ^4.5.0
  
  # 支付
  // 注意:支付需要原生集成


三、APP 签名与打包

3.1 Android 签名

# 1. 生成签名密钥(keystore)
keytool -genkey -v -keystore ~/my-app-key.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias my-app

# 填写信息:
# - 密码(牢记!丢失无法找回)
# - 姓名、组织、城市、省份、国家代码(CN)
# 确认后生成 my-app-key.jks 文件

# 2. 配置签名(android/app/build.gradle)

// android/app/build.gradle
android {
    signingConfigs {
        release {
            storeFile file('path/to/my-app-key.jks')
            storePassword 'your-store-password'
            keyAlias 'my-app'
            keyPassword 'your-key-password'
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true       // 代码混淆
            shrinkResources true     // 资源压缩
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
}

# 3. 打包APK(调试用)
flutter build apk --release

# 4. 打包AAB(上架Google Play必须用AAB)
flutter build appbundle --release

# 产物位置:
# APK: build/app/outputs/flutter-apk/app-release.apk
# AAB: build/app/outputs/bundle/release/app-release.aab

3.2 iOS 签名

签名流程(在Xcode中操作):

1. 打开 ios/Runner.xcworkspace

2. 选择 Runner 项目 → Signing & Capabilities

3. 勾选 "Automatically manage signing"

4. 选择 Team(你的Apple Developer账号)

5. Bundle Identifier 填写唯一标识
   格式:com.yourcompany.appname
   例:com.zhangsan.myapp

6. Xcode会自动创建:
   - Development Certificate(开发证书)
   - Development Provisioning Profile(开发描述文件)
   
7. 如果需要真机调试,还需要:
   - 将设备UDID添加到开发者账号
   - 重新生成描述文件

# 打包IPA
# 方式1:Xcode菜单
# Product → Archive → Distribute App → App Store Connect

# 方式2:命令行
flutter build ipa --release

# 产物位置:build/ios/ipa/


四、Android 上架流程

4.1 Google Play 上架

完整流程:

第1步:注册开发者账号
├── 访问 https://play.google.com/console
├── 使用Google账号登录
├── 支付一次性注册费 $25(约175元)
├── 填写开发者信息(个人或公司)
└── 等待审核(通常1-3天)

第2步:准备上架材料
├── APP名称(不超过30字)
├── 简短描述(80字以内)
├── 完整描述(4000字以内)
├── APP图标(512x512 PNG)
├── 功能图片(1024x500)
├── 手机截图(至少2张,16:9或9:16)
├── 7寸平板截图(可选)
├── 10寸平板截图(可选)
├── 隐私政策URL(必须有!)
├── 内容分级问卷
└── 数据安全声明

第3步:创建应用
├── Google Play Console → 创建应用
├── 选择默认语言、应用名称
├── 选择应用类型(应用/游戏)
├── 选择免费/付费
└── 确认内容政策合规

第4步:上传AAB包
├── 左侧菜单 → 正式版 → 创建新版本
├── 上传 app-release.aab
├── 填写版本号和版本名称
├── 填写发布说明
└── 保存

第5步:配置商店信息
├── 商店设置 → 应用详情
│   ├── 应用名称
│   ├── 简短描述
│   ├── 完整描述
│   ├── 图形资源(图标、截图、功能图片)
│   └── 分类(应用/游戏 → 具体分类)
├── 商店设置 → 主要商品详情
│   ├── 内容分级(填写问卷后自动评分)
│   ├── 目标受众群体
│   └── 新闻应用声明
└── 商店设置 → 数据安全
    ├── 数据收集声明
    ├── 数据共享声明
    └── 安全做法声明

第6步:设置定价与分发
├── 定价:免费或设置价格
├── 分发国家/地区:选择目标市场
├── 设备类型:手机/平板/可穿戴/TV
└── Android版本要求

第7步:提交审核
├── 检查所有必填项是否完成
├── 点击「提交审核」
├── 首次审核通常需要 3-7 天
├── 更新审核通常 1-3 天
└── 审核通过后自动发布(或手动发布)

4.2 国内 Android 应用市场上架

国内没有统一市场,需要在多个商店分别提交。以下是主流市场:

市场开发者注册审核时间特点
华为应用市场免费1-3天华为设备预装,流量大
小米应用商店免费1-3天小米设备预装
OPPO软件商店免费1-3天OPPO/一加设备
vivo应用商店免费1-3天vivo/iQOO设备
应用宝(腾讯)免费1-5天微信生态,流量大
360手机助手免费1-3天安全审核严格
百度手机助手免费1-3天搜索流量
阿里应用分发(豌豆荚)免费1-3天阿里系
魅族应用商店免费1-3天魅族设备
三星应用商店免费3-7天三星设备
国内上架必备材料:

1. 软件著作权(软著)
   ├── 必须!所有国内商店都要求
   ├── 申请周期:普通30-40工作日,加急10-15工作日
   ├── 费用:免费(自己申请)或 300-800元(代理加急)
   └── 申请地址:https://www.ccopyright.com.cn/

2. ICP备案
   ├── 如果APP有联网功能,需要ICP备案号
   ├── 主体:企业或个人
   └── 周期:约20个工作日

3. APP隐私政策
   ├── 必须有独立的隐私政策页面
   ├── 必须说明数据收集、使用、共享规则
   └── 建议请法务审核

4. 企业资质(公司上架)
   ├── 营业执照
   ├── 法人身份证
   └── 对公银行账户

5. 个人资质
   ├── 身份证正反面
   └── 手持身份证照片

6. APP安全评估报告(部分商店要求)
   └── 有资质的第三方检测机构出具

国内上架通用流程:

1. 注册开发者账号(各平台分别注册)
2. 实名认证(企业/个人)
3. 上传APK(签名后)
4. 填写应用信息
   - 应用名称、简介、分类
   - 截图(4-6张)
   - 图标(512x512)
   - 隐私政策URL
5. 提交审核
6. 审核通过后上架
7. 如被拒,按反馈修改后重新提交

4.3 常见被拒原因及解决

被拒原因解决方案
隐私政策缺失或不完善添加完整的隐私政策页面
缺少软著提前申请软件著作权
应用闪退/崩溃多机型测试,修复崩溃
功能与描述不符确保描述准确
涉及敏感内容移除敏感内容或取得资质
SDK合规问题使用合规的第三方SDK
权限申请过多只申请必要权限,说明用途
广告违规确保广告合规,可关闭
支付未接入官方支付国内某些商店要求接入其支付SDK
版本太低/架构问题确保支持64位架构(arm64-v8a)

五、iOS 上架流程(App Store)

5.1 完整上架流程

第1步:Apple Developer 注册
├── 访问 https://developer.apple.com/programs/
├── 使用Apple ID登录
├── 选择账号类型
│   ├── 个人(Individual):$99/年,适合独立开发者
│   ├── 公司(Organization):$99/年,需要D-U-N-S编号
│   └── 企业(Enterprise):$299/年,仅内部分发
├── 填写个人信息
├── 支付年费 $99(约688元)
└── 等待审核(个人1-2天,公司可能需要1-2周)

第2步:创建 App ID 和证书
├── 开发者后台 → Certificates, Identifiers & Profiles
├── 创建 App ID
│   ├── Description: 应用描述
│   └── Bundle ID: com.yourcompany.appname(与Xcode一致)
├── 创建证书
│   ├── Development Certificate(开发调试用)
│   └── Distribution Certificate(发布用)
└── 创建描述文件(Provisioning Profile)
    ├── Development Profile(开发用)
    └── Distribution Profile(发布用)

第3步:在 App Store Connect 创建应用
├── 访问 https://appstoreconnect.apple.com
├── 我的App → 点击「+」新建App
├── 填写信息
│   ├── 平台:iOS
│   ├── 名称:应用名称(用户可见)
│   ├── 主要语言:简体中文
│   ├── Bundle ID:选择已创建的
│   ├── SKU:唯一标识符(内部用)
│   └── 用户访问权限:完全访问权限
└── 创建完成

第4步:配置应用信息
├── App Store 信息
│   ├── 副标题(30字以内)
│   ├── 分类(主要分类/次要分类)
│   ├── 内容版权
│   └── 年龄分级(填写问卷)
├── 价格与销售范围
│   ├── 价格:免费或选择价格等级
│   └── 销售范围:选择国家/地区
├── 隐私
│   ├── 隐私政策URL(必须!)
│   └── App隐私 → 数据类型声明
└── App审核信息
    ├── 联系信息(姓名、电话、邮箱)
    ├── 登录信息(如果需要登录才能体验)
    └── 备注(特殊说明)

第5步:构建版本
├── 方式1:通过Xcode上传
│   ├── Xcode → Product → Archive
│   ├── Archive完成 → Distribute App
│   ├── 选择 App Store Connect
│   ├── Upload → 等待处理完成
│   └── 约15-30分钟后在App Store Connect可见
│
├── 方式2:通过Transporter上传
│   ├── 下载 Apple Transporter(App Store)
│   ├── 登录Apple账号
│   ├── 拖入IPA文件
│   └── 点击交付
│
└── 方式3:命令行上传
    xcodebuild -exportArchive \
      -archivePath build/Runner.xcarchive \
      -exportPath build/output \
      -exportOptionsPlist ExportOptions.plist
    
    # 然后用 altool 或 xcrun 上传
    xcrun altool --upload-app \
      -f build/output/Runner.ipa \
      -t ios \
      -u your@apple.id \
      -p your-app-specific-password

第6步:提交审核
├── App Store Connect → 选择构建版本
├── 填写版本信息
│   ├── 版本号(如 1.0.0)
│   ├── 新功能描述
│   └── 审核备注
├── 添加预览视频(可选,推荐)
├── 添加App预览和截图
│   ├── 6.7英寸(iPhone 15 Pro Max)必填
│   ├── 6.5英寸(iPhone 11 Pro Max)必填
│   ├── 5.5英寸(iPhone 8 Plus)必填
│   ├── 12.9英寸 iPad(如支持iPad)必填
│   └── 截图要求:PNG或JPEG,不含Alpha通道
├── 检查所有必填项
├── 点击「提交以供审核」
└── 等待审核结果

第7步:审核结果处理
├── 通过 → 自动上架或手动发布
├── 被拒 → 查看拒绝原因 → 修复 → 重新提交
│   ├── Metadata Rejected:修改信息即可,不需重新上传
│   └── Binary Rejected:需要修改代码,重新上传
└── 加急审核:特殊情况可申请加急(每年有限次数)

5.2 App Store 审核指南要点

Apple审核重点(必须遵守):

1. 性能
   ├── APP不能崩溃或有严重Bug
   ├── 启动时间合理
   └── 不能有未完成的功能(占位符)

2. 设计
   ├── 遵循 Human Interface Guidelines (HIG)
   ├── 适配所有支持的屏幕尺寸
   └── 不能抄袭其他应用

3. 法律
   ├── 隐私政策必须完整且可访问
   ├── 数据收集必须有用户同意
   ├── 不能收集不必要的数据
   └── 必须提供删除账号功能

4. 业务
   ├── 虚拟物品必须使用Apple内购(IAP)
   ├── 不能引导用户到外部支付
   ├── 订阅必须明确告知价格和周期
   └── 免费试用必须有取消方式

5. 安全
   ├── 用户生成内容需要举报机制
   ├── 不能包含有害内容
   ├── 不能有隐藏功能
   └── 加密需要向美国提交分类报告

6. 常见被拒理由
   ├── Guideline 2.1:崩溃/Bug
   ├── Guideline 2.3:性能问题
   ├── Guideline 3.1.1:支付问题(未使用IAP)
   ├── Guideline 4.0:设计问题
   ├── Guideline 5.1.1:数据收集和存储
   └── Guideline 5.1.2:缺少隐私政策

5.3 审核时间与费用

项目时间费用
注册开发者1-14天$99/年
首次审核1-3天(平均24-48小时)免费
更新审核数小时-2天免费
加急审核24小时内免费(有限次数)
TestFlight测试即时免费
内购分成-Apple抽成15-30%

六、TestFlight 测试

TestFlight 是Apple官方的测试分发平台,上架前必须测试。

使用流程:
1. 在 App Store Connect 中上传构建版本
2. 内部测试(Internal Testing)
   ├── 最多100人
   ├── 添加团队成员的Apple ID
   ├── 审核后几分钟可用
   └── 无需Apple审核
3. 外部测试(External Testing)
   ├── 最多10000人
   ├── 通过链接邀请
   ├── 首次需要Beta App审核(约24小时)
   └── 后续更新无需审核
4. 测试人员安装
   ├── 安装 TestFlight App
   ├── 点击邀请链接
   ├── 安装测试版APP
   └── 可直接在APP内反馈问题


七、版本更新流程

Android 更新:
1. 修改版本号(pubspec.yaml 中 version: 1.0.1+2)
2. 重新打包AAB/APK
3. 上传到各应用商店
4. 填写更新日志
5. 提交审核
6. 审核通过后发布

iOS 更新:
1. 修改版本号(Xcode → General → Version / Build)
2. 重新Archive并上传
3. App Store Connect 中选择新构建版本
4. 填写「此版本的新增内容」
5. 提交审核
6. 审核通过后发布

版本号规范(语义化版本):
  Major.Minor.Patch(如 1.2.3)
  Major:大版本更新(可能不兼容旧版)
  Minor:新功能
  Patch:Bug修复
  
  Xcode Build号必须递增(纯数字即可)
  Android versionCode 必须递增


八、运营与数据分析

工具用途平台
Google Play Console下载量/评分/崩溃分析Android
App Store Connect下载量/评分/崩溃分析iOS
Firebase Analytics用户行为分析双平台
友盟统计国内主流数据统计双平台
GrowingIO用户行为分析双平台
Bugly崩溃监控双平台
Sentry错误监控双平台

九、费用清单

项目费用说明
Apple开发者账号$99/年(约688元)必须
Google Play开发者$25一次性(约175元)必须
软件著作权0-800元国内上架必须
域名+服务器100-500元/月根据业务量
推送服务0-500元/月极光/个推有免费额度
短信验证码0.04-0.06元/条注册登录用
微信开放平台300元/年微信登录/分享/支付
SSL证书0-几千元/年Let's Encrypt免费
<strong>总计(最低)</strong><strong>约1500元首年</strong>个人独立开发
返回首页