上架前准备
上架之前,确保以下几点已经完成:
- ✅ 账号注册:Google Play 开发者账号($25 一次性费用)+ Apple 开发者账号($99/年)
- ✅ App 信息:应用名称、描述(中英文)、关键词、隐私政策 URL
- ✅ 素材:应用图标(1024×1024 PNG,无透明度)、截图(各种设备尺寸)、宣传图
- ✅ 隐私政策:即使不收集用户数据,也必须有隐私政策页面
Android 签名与打包
第一步:生成签名 Keystore
keytool -genkeypair -v \
-keystore my-release-key.keystore \
-alias my-key-alias \
-keyalg RSA \
-keysize 2048 \
-validity 10000
⚠️ 极其重要
Keystore 文件和密码一定要妥善备份!一旦丢失,你将永远无法更新这个 App(Google Play 绑定签名)。建议存到多个安全位置(加密云盘 + 本地外置硬盘)。
第二步:配置签名(Flutter)
# android/key.properties(不要提交到 Git!)
storePassword=your_store_password
keyPassword=your_key_password
keyAlias=my-key-alias
storeFile=../my-release-key.keystore
// android/app/build.gradle
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(rootProject.file('key.properties')))
android {
signingConfigs {
release {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true // 开启代码混淆
shrinkResources true
}
}
}
第三步:打包 AAB(推荐)
# Flutter
flutter build appbundle --release
# React Native
cd android && ./gradlew bundleRelease
Google Play 推荐上传 .aab 而非 .apk,因为 Play Store 会根据用户设备自动分发最优包,减少下载体积。
Google Play 上架
- 登录 Google Play Console → 创建应用
- 填写应用信息、内容分级(IARC 问卷)、目标受众
- 上传 AAB 到「内部测试」轨道,先做内测
- 完成所有 Policy 声明(数据安全表格很重要,如实填写)
- 发布到「生产」轨道,等待审核(通常 1~3 天)
💡 技巧
先发布到「内部测试」轨道验证没问题后,再升级到「正式发布」。这样即使发现 Bug 也能快速回滚,不影响正式用户。
iOS 签名与打包
iOS 签名比 Android 复杂,涉及证书(Certificate)、描述文件(Provisioning Profile)、Bundle ID 三者的绑定。
# Flutter:在 Xcode 打开项目,配置好 Team 和 Bundle ID 后
flutter build ipa --release
# 上传到 App Store Connect
xcrun altool --upload-app -f build/ios/ipa/*.ipa \
-u your@apple.id -p app-specific-password
推荐使用 Fastlane 自动化证书管理和上传流程:
# Fastfile
lane :release do
match(type: "appstore") # 自动同步证书
build_app(scheme: "Runner") # 编译
upload_to_app_store # 上传
end
App Store 上架
- 在 App Store Connect 创建新 App,填写 Bundle ID
- 填写应用名称、副标题、关键词(100字符,空格分隔或逗号)
- 上传截图:至少需要 6.5 英寸(iPhone 15 Pro Max)和 12.9 英寸(iPad)尺寸
- 构建版本上传后等待处理(通常 10~30 分钟)
- 选择构建版本 → 提交审核
- 首次审核通常 24~48 小时,之后一般几小时
审核常见被拒原因
| 平台 | 常见被拒原因 | 解决方案 |
|---|---|---|
| App Store | 隐私权限说明不足 | 在 Info.plist 中为每个权限添加使用说明 |
| App Store | 功能描述不完整 | 截图和文案要与实际功能完全匹配 |
| App Store | 缺少测试账号 | 在审核备注中提供演示账号密码 |
| Google Play | 数据安全表格填写不实 | 如实声明所有收集的数据类型 |
| Google Play | 目标 API 等级过低 | 确保 targetSdkVersion 符合 Google 最新要求 |
更新发版流程
- 每次发版必须升级版本号(
versionName和versionCode双双递增) - Android:
versionCode只能递增,不能降低 - iOS:
CFBundleVersion(Build Number)每次上传都需要唯一 - 写好 Release Notes(更新日志),用户会因为清晰的更新说明而信任你的 App