Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Capacitor浅析
  • ADB调试
  • mlkit
  • face detection
  • Android中的Kotlin协程:告别回调地狱
  • Android性能优化实践与技巧
  • Android Jetpack Compose入门:构建现代UI的全新方式
  • Android Jetpack Compose入门与实践 - 构建现代Android UI
  • Android Jetpack Compose入门指南 - 构建现代UI的全新方式
  • Android Jetpack与架构组件-构建现代化应用
  • Android Jetpack架构组件:ViewModel与LiveData实战指南
  • Android Jetpack组件:构建现代Android应用的核心利器
  • Android Jetpack组件详解:构建现代化应用的核心
  • Android数据绑定与MVVM架构-构建现代化应用
  • Android架构组件:构建现代化应用的基石
  • Android架构组件与Jetpack-构建现代化应用的基石
  • Android架构组件与Jetpack-构建现代化应用的基础
  • Android架构设计之MVVM模式实战指南
  • 拥抱未来:Android Jetpack Compose入门指南
  • Android权限管理完全指南-从基础到实践
  • Android测试指南-从单元测试到UI测试的实践之路
  • Android依赖注入实战:从Dagger到Hilt的进化之路
  • Android网络编程完全指南-从HTTP到Retrofit的实践之路
  • Android数据持久化完全指南-从SharedPreferences到Room数据库
  • Android多线程与并发处理完全指南-从Thread到协程的进阶之路
  • Android应用打包与发布全流程指南-从签名到上架的实战之路
    • 前言
    • 应用签名基础
      • 什么是应用签名?
      • 创建签名密钥
      • 在Android Studio中配置签名
    • 构建变体与多渠道打包
      • 理解构建变体
      • 自定义构建类型
      • 多渠道打包
    • APK与App Bundle
      • APK vs App Bundle
      • 为什么选择App Bundle?
      • 构建App Bundle
    • 应用版本管理
      • 版本号与版本名称
      • 版本更新策略
      • 自动化版本管理
    • 发布到Google Play
      • 准备工作
      • 上传App Bundle
      • 审核与发布
    • 第三方应用商店发布
    • 自动化构建与持续集成
      • 手动构建的痛点
      • 使用Jenkins实现自动化构建
      • 其他CI/CD工具
    • 结语
  • Android安全完全指南-从基础防护到高级加密的实战之路
  • android
Jorgen
2026-01-28
目录

Android应用打包与发布全流程指南-从签名到上架的实战之路

# 前言

作为一名Android开发者,我们每天都在编写代码、设计界面、调试bug,但最终的目标是什么?当然是让我们的应用能够被用户下载和使用!📱 从代码到用户手中,这个过程被称为"应用打包与发布",虽然不是开发的核心,但却至关重要。

提示

"代码写得再好,无法打包发布给用户,也只是纸上谈兵。"

今天,我将带大家一起走完Android应用从开发到上架的完整流程,让你轻松掌握应用打包与发布的所有技巧!

# 应用签名基础

# 什么是应用签名?

在Android中,每个应用都必须经过数字签名才能安装和运行。签名就像是应用的"身份证",用于验证应用的开发者身份,并确保应用在发布后没有被修改。

# 创建签名密钥

首先,我们需要创建一个签名密钥:

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
1

执行这个命令后,会提示你输入密钥库密码和密钥密码,以及一些关于你的信息。

THEOREM

密钥库密码和密钥密码一定要记住且妥善保管,一旦丢失,你将无法更新你的应用!

# 在Android Studio中配置签名

  1. 打开你的项目,进入 File > Project Structure
  2. 选择 Modules > app
  3. 切换到 Signing 标签页
  4. 点击 + 添加一个新的签名配置
  5. 填写之前创建的密钥信息

📡 小贴士:建议将签名密钥信息存储在 keystore.properties 文件中,而不是直接硬编码在 build.gradle 中,这样可以更好地保护你的签名信息。

# 构建变体与多渠道打包

# 理解构建变体

Android Studio默认会为我们的应用创建多种构建变体,通常是:

  • debug:调试版本,用于开发测试
  • release:发布版本,用于正式发布

# 自定义构建类型

我们可以在 app/build.gradle 中自定义构建类型:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        
        // 自定义一个测试版本
        debug {
            applicationIdSuffix ".debug"
            versionNameSuffix "-DEBUG"
        }
        
        // 自定义一个预发布版本
        staging {
            initWith debug
            applicationIdSuffix ".staging"
            versionNameSuffix "-STAGING"
            minifyEnabled false
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 多渠道打包

对于应用分发,我们经常需要统计不同渠道的下载量。Android Gradle插件提供了简单的方法来实现多渠道打包:

  1. 在 app/build.gradle 中添加:
android {
    productFlavors {
        xiaomi {
            dimension "channel"
        }
        huawei {
            dimension "channel"
        }
        wandoujia {
            dimension "channel"
        }
        // 添加更多渠道...
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  1. 在 AndroidManifest.xml 中添加渠道占位符:
<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${channel}" />
1
2
3
  1. 构建指定渠道版本:
./gradlew assembleHuaweiRelease
1

# APK与App Bundle

# APK vs App Bundle

APK(Android Package Kit)是Android应用的安装包格式,而App Bundle是Google推出的一种新的发布格式。

特性 APK App Bundle
文件大小 较大 较小
安装速度 较慢 较快
分发方式 直接安装 通过Google Play动态生成
多语言支持 需要构建多个APK 自动适配
分发渠道 仅限Google Play 可分发到多个应用商店

# 为什么选择App Bundle?

使用App Bundle有以下优势:

  1. 减小应用体积:用户只下载他们需要的资源
  2. 简化发布流程:只需上传一个App Bundle,Google Play会自动生成和优化APK
  3. 支持动态功能:可以按需加载应用功能
  4. 更好的性能:应用启动更快,运行更流畅

# 构建App Bundle

构建App Bundle非常简单:

./gradlew bundleRelease
1

构建完成后,你可以在 app/build/outputs/bundle/release 目录下找到 app-release.aab 文件。

# 应用版本管理

# 版本号与版本名称

Android应用有两个版本标识:

  • versionCode:整数,用于内部版本控制,必须递增
  • versionName:字符串,显示给用户看的版本号

在 build.gradle 中配置:

android {
    defaultConfig {
        versionCode 1
        versionName "1.0.0"
    }
}
1
2
3
4
5
6

# 版本更新策略

合理的版本更新策略对用户体验至关重要:

  1. 语义化版本控制:遵循 主版本号.次版本号.修订号 格式
  2. 重大更新:主版本号递增(如 1.0.0 → 2.0.0)
  3. 功能更新:次版本号递增(如 1.0.0 → 1.1.0)
  4. Bug修复:修订号递增(如 1.0.0 → 1.0.1)

# 自动化版本管理

为了避免手动管理版本号带来的错误,可以使用以下方法实现自动化版本管理:

android {
    defaultConfig {
        versionCode generateVersionCode()
        versionName generateVersionName()
    }
}

def generateVersionCode() {
    return project.hasProperty("versionCode") ? project.versionCode.toInteger() : 1
}

def generateVersionName() {
    return project.hasProperty("versionName") ? project.versionName : "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 发布到Google Play

# 准备工作

  1. 注册Google Play开发者账号(25美元一次性费用)
  2. 创建应用列表
  3. 填写应用信息(名称、描述、截图等)
  4. 设置定价和分发国家

# 上传App Bundle

  1. 进入Google Play Console
  2. 选择你的应用
  3. 点击"生产"下的"创建新版本"
  4. 上传之前构建的App Bundle
  5. 填写版本信息和发布说明
  6. 保存并提交审核

# 审核与发布

Google Play会对应用进行审核,通常需要几个小时到几天不等。审核通过后,你可以选择立即发布或安排发布时间。

提示

首次提交的应用审核可能会更严格,确保你的应用符合Google Play的政策。

# 第三方应用商店发布

除了Google Play,我们还可以将应用发布到其他应用商店:

  1. 华为应用市场:适用于华为设备用户
  2. 小米应用商店:适用于小米设备用户
  3. OPPO软件商店:适用于OPPO设备用户
  4. VIVO应用商店:适用于VIVO设备用户
  5. 腾讯应用宝:适用于国内用户

每个应用商店都有自己的上传流程和要求,需要单独准备应用资料和上传APK。

# 自动化构建与持续集成

# 手动构建的痛点

手动构建和发布应用存在以下问题:

  1. 容易出错:手动操作容易遗漏步骤
  2. 效率低下:每次构建需要花费大量时间
  3. 版本管理混乱:难以追踪每个版本的构建状态
  4. 协作困难:团队成员之间的构建环境不一致

# 使用Jenkins实现自动化构建

Jenkins是一个流行的持续集成工具,可以自动化构建、测试和发布流程:

  1. 安装Jenkins服务器
  2. 配置Android SDK和构建环境
  3. 创建Jenkins任务
  4. 配置构建脚本

示例Jenkinsfile:

pipeline {
    agent any
    
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        
        stage('Build') {
            steps {
                sh './gradlew clean assembleRelease'
            }
        }
        
        stage('Test') {
            steps {
                sh './gradlew test'
            }
        }
        
        stage('Upload') {
            steps {
                // 上传到Google Play或其他应用商店
            }
        }
    }
    
    post {
        success {
            echo '构建成功!'
        }
        failure {
            echo '构建失败!'
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

# 其他CI/CD工具

除了Jenkins,还有其他优秀的CI/CD工具可以选择:

  1. GitHub Actions:与GitHub深度集成,配置简单
  2. GitLab CI/CD:与GitLab深度集成,功能强大
  3. Bitrise:专注于移动应用的CI/CD服务
  4. CircleCI:配置简单,支持多种语言和框架

# 结语

Android应用打包与发布虽然不是开发的核心,但却是将我们的作品带给用户的关键环节。通过本文的介绍,相信你已经掌握了从应用签名到上架的完整流程。

记住:不要等到最后一刻才开始学习如何打包发布,否则你会后悔的!

在实际工作中,建议你:

  1. 尽早建立自动化构建流程
  2. 妥善保管签名密钥
  3. 遵循语义化版本控制
  4. 定期测试发布流程

希望这篇文章能够帮助你顺利完成Android应用的打包与发布,让你的作品能够被更多用户使用和喜爱!

"代码改变世界,发布让世界看到你的代码。" — Jorgen

#Android打包#应用发布#构建优化
上次更新: 2026/01/28, 20:46:44
Android多线程与并发处理完全指南-从Thread到协程的进阶之路
Android安全完全指南-从基础防护到高级加密的实战之路

← Android多线程与并发处理完全指南-从Thread到协程的进阶之路 Android安全完全指南-从基础防护到高级加密的实战之路→

最近更新
01
LLM
01-30
02
intro
01-30
03
intro
01-30
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式