mobile-eda/docs/PHASE4_ANDROID_DEPLOYMENT_GUIDE.md

915 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Android 应用商店上架指南
**应用名称**: 移动 EDA - 原理图设计工具
**Package Name**: com.jiloukeji.mobileeda
**版本**: 1.0.0 (1)
**文档版本**: 1.0
**更新日期**: 2026-03-07
---
## 📋 目录
1. [前置准备](#前置准备)
2. [签名配置](#签名配置)
3. [构建发布包](#构建发布包)
4. [各商店提交指南](#各商店提交指南)
5. [素材准备](#素材准备)
6. [常见问题](#常见问题)
---
## 前置准备
### 1.1 开发者账号注册
| 商店 | 网址 | 费用 | 审核时间 |
|------|------|------|---------|
| 华为应用市场 | developer.huawei.com | 免费 | 1-3 工作日 |
| 小米应用商店 | dev.mi.com | 免费 | 1-2 工作日 |
| OPPO 软件商店 | open.oppomobile.com | 免费 | 1-3 工作日 |
| VIVO 应用商店 | dev.vivo.com.cn | 免费 | 2-4 工作日 |
| 腾讯应用宝 | open.qq.com | 免费 | 1-3 工作日 |
### 1.2 实名认证
所有商店均需要完成开发者实名认证:
```
所需材料:
• 个人开发者:身份证正反面
• 企业开发者:营业执照、法人身份证
• 联系方式:手机号、邮箱
• 对公账户(企业)
认证时间1-3 工作日
```
### 1.3 开发环境检查
```bash
# 检查 Flutter 环境
flutter doctor -v
# 要求:
# ✓ Android toolchain
# ✓ Android SDK >= 34
# ✓ Java Development Kit >= 17
```
### 1.4 项目配置
```gradle
// android/app/build.gradle
android {
compileSdkVersion 34
defaultConfig {
applicationId "com.jiloukeji.mobileeda"
minSdkVersion 21
targetSdkVersion 34
versionCode 1
versionName "1.0.0"
}
signingConfigs {
release {
storeFile file("../mobile-eda-release-key.jks")
storePassword System.getenv("KEYSTORE_PASSWORD") ?: ""
keyAlias "mobile-eda"
keyPassword System.getenv("KEY_PASSWORD") ?: ""
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
```
---
## 签名配置
### 2.1 生成 Keystore
#### 使用 keytool 生成
```bash
# 生成新的 Keystore
keytool -genkey -v \
-keystore mobile-eda-release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias mobile-eda \
-storetype PKCS12
# 按提示输入:
# - 密钥库密码 (6 位以上)
# - 姓名、单位、城市等信息
# - 密钥密码 (可与密钥库密码相同)
```
#### Keystore 信息记录模板
```
====================================
移动 EDA 签名密钥信息
====================================
密钥库文件mobile-eda-release-key.jks
密钥库类型PKCS12
密钥别名mobile-eda
密钥算法RSA
密钥长度2048 位
有效期10000 天 (约 27 年)
生成日期2026-03-07
过期日期2053-XX-XX
密钥库密码:[安全保管]
密钥密码:[安全保管]
保管位置:[保险柜/密码管理器]
备份位置:[异地备份]
====================================
⚠️ 重要提示:
1. 此密钥用于所有版本签名,丢失将无法更新应用
2. 务必多处备份,建议加密存储
3. 不要提交到版本控制系统
4. 仅限授权人员访问
====================================
```
#### 使用 Android Studio 生成
```
1. Build → Generate Signed Bundle / APK
2. 选择 APK 或 Android App Bundle
3. 点击 Next
4. 点击 "Create new..."
5. 填写密钥库信息
6. 选择密钥算法和长度
7. 填写证书信息
8. 选择保存位置
9. 完成创建
```
### 2.2 配置签名
#### 方法 1: gradle.properties (不推荐用于生产)
```properties
# android/gradle.properties
RELEASE_STORE_FILE=../mobile-eda-release-key.jks
RELEASE_STORE_PASSWORD=your_password
RELEASE_KEY_ALIAS=mobile-eda
RELEASE_KEY_PASSWORD=your_password
```
#### 方法 2: 环境变量 (推荐)
```bash
# ~/.bashrc 或 ~/.zshrc
export KEYSTORE_PASSWORD="your_keystore_password"
export KEY_PASSWORD="your_key_password"
# 或在 CI/CD 中配置环境变量
```
#### 方法 3: CI/CD 密钥管理
```yaml
# GitHub Actions 示例
# .github/workflows/release.yml
jobs:
build:
steps:
- name: Decode Keystore
run: |
echo "${{ secrets.KEYSTORE }}" | base64 --decode > android/mobile-eda-release-key.jks
- name: Build Release
env:
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: flutter build appbundle --release
```
### 2.3 验证签名
```bash
# 验证 APK 签名
apksigner verify --verbose app-release.apk
# 查看签名信息
apksigner verify --print-certs app-release.apk
# 验证 AAB 签名
java -jar bundletool.jar validate-bundle --bundle app-release.aab
```
---
## 构建发布包
### 3.1 构建 APK
```bash
# 构建通用 APK (体积较大)
flutter build apk --release
# 输出位置:
# build/app/outputs/flutter-apk/app-release.apk
# 按 ABI 分包 (推荐,减小体积)
flutter build apk --split-per-abi
# 输出位置:
# build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk (32 位)
# build/app/outputs/flutter-apk/app-arm64-v8a-release.apk (64 位)
# build/app/outputs/flutter-apk/app-x86_64-release.apk (模拟器)
```
### 3.2 构建 App Bundle (推荐)
```bash
# 构建 AAB (Google Play 格式,也适用于国内商店)
flutter build appbundle --release
# 输出位置:
# build/app/outputs/bundle/release/app-release.aab
# 验证 AAB
bundletool build-apks --bundle=app-release.aab --output=app.apks
```
### 3.3 构建优化
#### 启用代码混淆
```proguard
# android/app/proguard-rules.pro
# Flutter
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
# Riverpod
-keep class org.kodein.di.** { *; }
-keep class org.kodein.** { *; }
# Isar
-keep class ** extends isar.IsarObject { *; }
-keep class isar.** { *; }
# 保留模型类
-keep class com.jiloukeji.mobileeda.data.model.** { *; }
```
#### 启用资源压缩
```gradle
android {
buildTypes {
release {
minifyEnabled true // 代码混淆
shrinkResources true // 资源压缩
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
```
### 3.4 版本管理
```yaml
# pubspec.yaml
version: 1.0.0+1 # versionName+versionCode
# 版本规范:
# 主版本.次版本.修订版 + 构建号
# 1.0.0+1 → 首次发布
# 1.0.1+2 → Bug 修复
# 1.1.0+10 → 新功能
```
```bash
# 自动化版本更新脚本
#!/bin/bash
# scripts/bump_version.sh
CURRENT_VERSION=$(grep "^version:" pubspec.yaml | cut -d' ' -f2 | cut -d'+' -f1)
CURRENT_BUILD=$(grep "^version:" pubspec.yaml | cut -d' ' -f2 | cut -d'+' -f2)
NEW_BUILD=$((CURRENT_BUILD + 1))
NEW_VERSION="${CURRENT_VERSION}+${NEW_BUILD}"
sed -i "s/^version:.*/version: ${NEW_VERSION}/" pubspec.yaml
echo "Version updated to ${NEW_VERSION}"
```
---
## 各商店提交指南
### 4.1 华为应用市场
#### 提交入口
https://developer.huawei.com/consumer/cn/appgallery
#### 基本信息
| 字段 | 要求 | 示例 |
|------|------|------|
| 应用名称 | 30 字符内 | 移动 EDA |
| 包名 | 唯一 | com.jiloukeji.mobileeda |
| 版本号 | - | 1.0.0 |
| 分类 | 办公商务 | 办公软件 |
#### 素材要求
```
图标:
• 尺寸512x512 像素
• 格式PNG
• 大小:< 200KB
• 要求:无圆角、无文字
截图:
• 数量:至少 2 张
• 尺寸1920x1080 或 1280x720
• 格式PNG/JPG
功能图:
• 数量3-5 张
• 尺寸1024x500 像素
• 格式PNG
```
#### 特殊要求
```
必须提供:
✓ 软件著作权证书 (重要)
✓ ICP 备案信息
✓ 隐私政策独立页面
✓ 开发者实名认证
审核时间1-3 工作日
```
#### 提交流程
```
1. 登录华为开发者联盟
2. 应用和服务 → 我的应用 → 创建应用
3. 填写基本信息
4. 上传应用包 (APK 或 AAB)
5. 上传素材 (图标、截图、功能图)
6. 填写应用描述
7. 上传资质文件 (软著、ICP 等)
8. 提交审核
```
---
### 4.2 小米应用商店
#### 提交入口
https://dev.mi.com/distribute/
#### 基本信息
| 字段 | 要求 | 示例 |
|------|------|------|
| 应用名称 | 30 字符内 | 移动 EDA |
| 包名 | 唯一 | com.jiloukeji.mobileeda |
| 分类 | 办公 | 办公工具 |
#### 素材要求
```
图标:
• 尺寸512x512 像素
• 格式PNG
• 大小:< 100KB
截图:
• 数量:至少 3 张,推荐 5 张
• 尺寸:建议 1920x1080
• 格式PNG/JPG
应用描述:
• 字数500 字以内
• 内容:功能介绍、特色亮点
```
#### 特殊要求
```
必须提供:
✓ 开发者实名认证
✓ 隐私政策 URL
推荐提供:
• 软件著作权证书 (加速审核)
审核时间1-2 工作日
```
#### 提交流程
```
1. 登录小米开放平台
2. 应用分发 → 我的应用 → 新增应用
3. 填写应用信息
4. 上传 APK/AAB
5. 上传素材
6. 填写描述和关键词
7. 提交审核
```
---
### 4.3 OPPO 软件商店
#### 提交入口
https://open.oppomobile.com/
#### 基本信息
| 字段 | 要求 | 示例 |
|------|------|------|
| 应用名称 | 30 字符内 | 移动 EDA |
| 包名 | 唯一 | com.jiloukeji.mobileeda |
| 分类 | 办公商务 | - |
#### 素材要求
```
图标:
• 尺寸512x512 像素
• 格式PNG
截图:
• 数量:至少 2 张
• 尺寸1920x1080
功能图:
• 数量2-5 张
• 尺寸1024x500 像素
```
#### 特殊要求
```
必须提供:
✓ 隐私政策
✓ 权限详细说明
✓ 开发者资质认证
审核时间1-3 工作日
```
#### 提交流程
```
1. 登录 OPPO 开放平台
2. 应用分发 → 应用管理 → 创建应用
3. 填写基本信息
4. 上传应用包
5. 上传素材和资质
6. 提交审核
```
---
### 4.4 VIVO 应用商店
#### 提交入口
https://dev.vivo.com.cn/
#### 基本信息
| 字段 | 要求 | 示例 |
|------|------|------|
| 应用名称 | 30 字符内 | 移动 EDA |
| 包名 | 唯一 | com.jiloukeji.mobileeda |
| 分类 | 办公 | - |
#### 素材要求
```
图标:
• 尺寸512x512 像素
• 格式PNG
截图:
• 数量:至少 3 张
• 尺寸1920x1080
```
#### 特殊要求
```
必须提供:
✓ 隐私政策
✓ 实名认证
优先审核:
• 软件著作权证书
审核时间2-4 工作日
```
#### 提交流程
```
1. 登录 VIVO 开发者平台
2. 应用分发 → 我的应用 → 新增应用
3. 填写应用信息
4. 上传 APK/AAB
5. 上传素材
6. 提交审核
```
---
### 4.5 腾讯应用宝
#### 提交入口
https://open.qq.com/
#### 基本信息
| 字段 | 要求 | 示例 |
|------|------|------|
| 应用名称 | 30 字符内 | 移动 EDA |
| 包名 | 唯一 | com.jiloukeji.mobileeda |
| 分类 | 办公 | - |
#### 素材要求
```
图标:
• 尺寸512x512 像素
• 格式PNG
截图:
• 数量:至少 3 张
• 尺寸1920x1080
功能图:
• 数量:可选
• 尺寸1024x500
宣传视频:
• 格式MP4
• 时长15-30 秒
• 可选
```
#### 特殊要求
```
必须提供:
✓ 隐私政策
✓ 用户协议
✓ 实名认证
审核时间1-3 工作日
```
#### 提交流程
```
1. 登录腾讯开放平台
2. 应用接入 → 移动应用 → 创建应用
3. 填写基本信息
4. 上传应用包
5. 上传素材和资质
6. 提交审核
```
---
## 素材准备
### 5.1 应用图标
#### 设计规范
```
尺寸要求:
• 主图标512x512 像素 (所有商店)
• App Store: 1024x1024 像素
格式要求:
• 格式PNG
• 背景:不透明
• 圆角:不要添加 (商店自动处理)
设计要求:
• 简洁清晰
• 与小尺寸下可识别
• 符合品牌色
• 避免文字
```
#### 图标设计建议
```
移动 EDA 图标设计:
• 主体:电路板/原理图符号
• 颜色:蓝色系 (符合 EDA 行业)
• 风格:扁平化、现代
• 元素:电路节点、连线、元件符号
```
### 5.2 应用截图
#### 截图规划
```
截图 1: 主界面
• 展示完整的编辑界面
• 突出工具栏和画布
• 显示 1-2 个元件
截图 2: 元件库
• 展示元件分类
• 显示搜索功能
• 突出元件丰富度
截图 3: 属性编辑
• 展示属性面板
• 显示编辑状态
• 突出专业性
截图 4: 深色模式
• 展示深色主题
• 对比浅色模式
• 突出护眼设计
截图 5: 多语言
• 展示语言切换
• 显示国际化
• 突出全球化
```
#### 截图制作
```bash
# 使用 Flutter 模拟器截图
flutter emulators --launch <emulator_id>
# 或使用 ADB
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png
# 或使用 Android Studio
View → Tool Windows → Device File Explorer
```
### 5.3 功能图
#### 设计规范
```
尺寸1024x500 像素
格式PNG
内容:
• 功能亮点展示
• 可添加文字说明
• 保持品牌一致性
```
#### 功能图内容建议
```
功能图 1: 流畅编辑
• 文案:"支持 1000+ 元件流畅渲染"
• 配图:复杂电路图
功能图 2: 丰富元件
• 文案:"内置丰富元件库"
• 配图:元件分类展示
功能图 3: 深色模式
• 文案:"护眼深色主题"
• 配图:深色模式界面
```
### 5.4 应用描述
#### 描述模板
```
【应用名称】移动 EDA - 专业原理图设计工具
【应用介绍】
移动 EDA 是一款专为电子工程师打造的移动端原理图设计工具,让您随时随地进行电路设计。
【核心功能】
• 流畅编辑:支持 1000+ 元件流畅渲染60fps 丝滑体验
• 丰富元件库:内置电源、被动元件、半导体、连接器等常用元件
• 智能连线:自动捕捉连接点,支持总线绘制
• 属性编辑:快速修改元件位号、值、封装等属性
• 深色模式:护眼深色主题,长时间使用不疲劳
• 多语言支持:简体中文、繁体中文、英文、阿拉伯语
【专业特性】
• 符合行业标准:遵循 EDA 行业配色和操作习惯
• 离线工作:无需联网,数据本地存储
• 快速搜索:元件库支持关键词搜索和筛选
• 撤销重做:完善的历史记录管理
【适用人群】
• 电子工程师
• 硬件开发者
• 电子爱好者
• 相关专业学生
【技术支持】
邮箱support@jiloukeji.com
网站https://www.jiloukeji.com
【版本更新】
v1.0.0:
• 首次发布
• 支持原理图编辑
• 内置丰富元件库
• 支持深色模式
• 支持多语言
```
---
## 常见问题
### Q1: Keystore 丢失
**问题**: 签名密钥丢失,无法更新应用
**解决方案**:
```
预防:
• 多处备份 (本地 + 云端 + 物理)
• 使用密码管理器
• 团队多人保管
丢失后:
• 无法恢复
• 需要重新发布应用 (新包名)
• 用户需要重新下载
```
### Q2: 审核被拒
**常见原因**:
```
• 隐私政策缺失或不合规
• 权限说明不清晰
• 应用存在 Bug 或崩溃
• 素材不符合规范
• 资质文件不全
```
**应对策略**:
```
1. 仔细阅读拒绝原因
2. 针对性修复
3. 重新提交
4. 联系商店客服
```
### Q3: 应用体积过大
**优化方案**:
```
• 使用 AAB 格式
• 按 ABI 分包
• 启用资源压缩
• 压缩图片资源
• 移除未使用依赖
```
### Q4: 多商店同步更新
**最佳实践**:
```
1. 统一版本号
2. 同时提交所有商店
3. 跟踪各商店审核状态
4. 协调上线时间
5. 准备回滚方案
```
### Q5: 热更新支持
**说明**:
```
Flutter 支持热更新方案:
• Shorebird (官方推荐)
• CodePush 类方案
注意:
• 国内商店可能限制热更新
• 需符合商店政策
• 重大更新仍需走审核
```
---
## 附录
### A. 提交检查清单
```markdown
## Android 提交前检查清单
### 签名配置
- [ ] Keystore 已生成并备份
- [ ] 密码已安全保管
- [ ] build.gradle 配置正确
- [ ] 签名验证通过
### 构建配置
- [ ] minSdkVersion >= 21
- [ ] targetSdkVersion >= 34
- [ ] versionCode 递增
- [ ] versionName 正确
- [ ] 代码混淆启用
- [ ] 资源压缩启用
### 素材准备
- [ ] 图标 (512x512)
- [ ] 截图 (至少 3 张)
- [ ] 功能图 (1024x500)
- [ ] 应用描述
- [ ] 关键词
### 合规文档
- [ ] 隐私政策
- [ ] 用户协议
- [ ] 权限说明
- [ ] 软件著作权 (推荐)
### 商店账号
- [ ] 华为开发者联盟
- [ ] 小米开放平台
- [ ] OPPO 开放平台
- [ ] VIVO 开发者平台
- [ ] 腾讯开放平台
### 提交
- [ ] 各商店应用创建
- [ ] 应用包上传
- [ ] 素材上传
- [ ] 资质上传
- [ ] 提交审核
```
### B. 版本发布流程
```
1. 代码冻结
2. 最终测试
3. 更新版本号
4. 构建发布包
5. 各商店提交
6. 跟踪审核
7. 协调上线
8. 监控反馈
```
### C. 相关资源
- [Flutter 安卓部署](https://docs.flutter.dev/deployment/android)
- [Android App Bundle](https://developer.android.com/guide/app-bundle)
- [华为应用市场审核标准](https://developer.huawei.com/consumer/cn/doc/huaweiapppGallery-Guides/0000001050059913)
- [小米应用商店审核规范](https://dev.mi.com/distribute/doc/details?pId=1536)
### D. 联系方式
- 技术支持support@jiloukeji.com
- 商务咨询business@jiloukeji.com
---
**文档版本**: 1.0
**最后更新**: 2026-03-07
**维护**: 发布工程师团队