mobile-eda/docs/PHASE4_ANDROID_DEPLOYMENT_GUIDE.md

17 KiB
Raw Blame History

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 开发环境检查

# 检查 Flutter 环境
flutter doctor -v

# 要求:
# ✓ Android toolchain
# ✓ Android SDK >= 34
# ✓ Java Development Kit >= 17

1.4 项目配置

// 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 生成

# 生成新的 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 (不推荐用于生产)

# 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: 环境变量 (推荐)

# ~/.bashrc 或 ~/.zshrc
export KEYSTORE_PASSWORD="your_keystore_password"
export KEY_PASSWORD="your_key_password"

# 或在 CI/CD 中配置环境变量

方法 3: CI/CD 密钥管理

# 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 验证签名

# 验证 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

# 构建通用 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 (推荐)

# 构建 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 构建优化

启用代码混淆

# 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.** { *; }

启用资源压缩

android {
    buildTypes {
        release {
            minifyEnabled true      // 代码混淆
            shrinkResources true    // 资源压缩
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

3.4 版本管理

# pubspec.yaml
version: 1.0.0+1  # versionName+versionCode

# 版本规范:
# 主版本.次版本.修订版 + 构建号
# 1.0.0+1  → 首次发布
# 1.0.1+2  → Bug 修复
# 1.1.0+10 → 新功能
# 自动化版本更新脚本
#!/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: 多语言
• 展示语言切换
• 显示国际化
• 突出全球化

截图制作

# 使用 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. 提交检查清单

## 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. 相关资源

D. 联系方式

  • 技术支持support@jiloukeji.com
  • 商务咨询business@jiloukeji.com

文档版本: 1.0
最后更新: 2026-03-07
维护: 发布工程师团队