android studio 签名打包教程

这是一份非常详细且适合新手的 Android Studio 签名打包(生成 APK/AAB)教程。

我们将分步进行,从创建签名密钥到最终生成安装包。

准备工作

在开始之前,请确保你的项目能够正常编译和运行。


第一部分:生成签名密钥(Keystore)

这个密钥是证明应用身份的唯一凭证,务必妥善保管。如果丢失,你将无法更新你的应用。

  1. 在 Android Studio 中,点击顶部菜单栏的 Build

  2. 选择 Generate Signed Bundle / APK

  3. 在弹出的窗口中,你会看到两个选项:

    • Android App Bundle (.aab):推荐用于上传到 Google Play。格式更小,包含所有设备配置信息,由 Google Play 商店动态生成适合用户设备的 APK。
    • APK (.apk):通用的安卓安装包,可以直接安装在设备上,用于其他应用市场或直接分发。

    我们先选择 APK 来进行演示,AAB 的流程几乎完全相同。点击 Next

  4. 现在你需要指定一个密钥存储路径。如果你还没有密钥,点击 Create new...

  5. 会弹出"New Key Store"窗口,你需要填写以下信息:

    • Key store path :密钥存储的位置和文件名。建议放在项目根目录下,并以 .jks 结尾(例如 my-release-key.jks)。点击右边的文件夹图标选择路径。
    • Password :为密钥库设置一个强密码。记住它!
    • Confirm:确认密码。
    • Alias :密钥的别名,可以理解为这个密钥的名字(例如 my-key-alias)。
    • Password (for Key) :为这个别名密钥设置一个密码。可以和上面的库密码相同,也可以不同。 同样要记住。
    • Confirm:确认密钥密码。
    • Validity (years):有效期(年)。Google 要求至少 25 年,建议设置为 25 年以上。
    • Certificate :证书信息。至少需要填写 First and Last Name(你的姓名或公司名),其他信息可选。

    填写完成后,点击 OK

  6. 系统会自动创建 .jks 文件,并回到上一个窗口,此时路径和别名等信息已经自动填充。再次输入密码。


第二部分:配置构建类型和签名

  1. 在填充好密钥信息的窗口下方,你需要选择 Build Variants (构建变体)。选择 release,因为我们要打正式发布包。

  2. 勾选 V2 (Full APK Signature)。这是 Android 7.0 引入的更安全、更快速的签名方案。建议始终勾选。

  3. 点击 Next


第三部分:选择构建版本和最终生成

  1. 现在你需要选择 Destination Folder,即 APK 文件的输出目录。建议选择一个你容易找到的文件夹,例如桌面的一个新建文件夹。

  2. Build Variants 这里再次确认你选择的是 release

  3. 点击 Finish

  4. Android Studio 会开始编译和打包。你可以在底部的 Build 窗口看到进度。

  5. 完成后,会有一个提示框弹出,告诉你构建成功。你可以点击链接直接定位到生成的 APK 文件。

恭喜!你已经成功生成了一个签名的 Release APK 文件,可以将其安装到设备或分发到各大应用市场了。


进阶:更安全的方式 - 使用环境变量(推荐)

将密码直接写在 IDE 中并不安全,特别是团队协作时。最佳实践是使用环境变量。

  1. 在项目的根目录 下创建一个名为 keystore.properties 的文件(此文件已被 .gitignore 排除,不会上传到代码库)。

  2. 在该文件中填入你的密钥信息:

    properties 复制代码
    storePassword=your_store_password
    keyPassword=your_key_password
    keyAlias=your_key_alias
    storeFile=your_store_file_path
    • storeFile.jks 文件相对于项目根目录的路径,例如 ../keys/my-release-key.jks
  3. Module 级build.gradle.kts (Kotlin DSL) 或 build.gradle (Groovy DSL) 文件顶部,android {} 块之前,添加以下代码来读取这个属性文件:

    Kotlin DSL (build.gradle.kts):

    kotlin 复制代码
    // 加载 keystore.properties 文件
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    val keystoreProperties = java.util.Properties()
    keystoreProperties.load(java.io.FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }

    Groovy DSL (build.gradle):

    groovy 复制代码
    // 加载 keystore.properties 文件
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    def keystoreProperties = new Properties()
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
  4. android {} 块内,配置 signingConfigsbuildTypes

    Kotlin DSL (build.gradle.kts):

    kotlin 复制代码
    android {
        signingConfigs {
            create("release") {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storeFile = file(keystoreProperties["storeFile"] as String)
                storePassword = keystoreProperties["storePassword"] as String
            }
        }
    
        buildTypes {
            getByName("release") {
                signingConfig = signingConfigs.getByName("release")
                // 其他 release 配置,如混淆
                isMinifyEnabled = true
                proguardFiles(
                    getDefaultProguardFile("proguard-android-optimize.txt"),
                    "proguard-rules.pro"
                )
            }
        }
    }

    Groovy DSL (build.gradle):

    groovy 复制代码
    android {
        signingConfigs {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
    
        buildTypes {
            release {
                signingConfig signingConfigs.release
                // 其他 release 配置,如混淆
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }

配置完成后:

以后你只需要点击 Android Studio 右侧 Gradle 面板 -> 你的项目 -> app -> Tasks -> build -> assembleRelease ,或者直接使用 ./gradlew assembleRelease 命令,就可以一键生成带签名的 Release APK,无需再通过图形界面输入密码。

生成的 APK 文件路径通常在:app/build/outputs/apk/release/


关于 Android App Bundle (.aAB)

生成 AAB 的流程与 APK 完全一样 。唯一的不同是在第一步时选择 Android App Bundle

AAB 文件不能直接安装到手机 ,它只用于上传到 Google Play Console。Google Play 会利用这个 Bundle 为不同设备生成最优化的 APK。

重要提醒

  • 备份密钥 :将你的 .jks 文件和 keystore.properties(如果你用了)备份到绝对安全的地方(如加密的 U 盘、安全的云存储)。丢失意味着你无法对应用进行任何更新。
  • 不要泄露密码:切勿将密钥和密码提交到代码仓库(如 GitHub)。
  • 使用强密码:为密钥库和密钥使用复杂且唯一的密码。

希望这份教程对你有帮助!

相关推荐
x***13392 小时前
【MyBatisPlus】MyBatisPlus介绍与使用
android·前端·后端
n***54383 小时前
【MySQL】MySQL内置函数--日期函数字符串函数数学函数其他相关函数
android·mysql·adb
z***75154 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
程序员陆业聪4 小时前
Android模拟器检测全面指南:从基础到高级策略
android
likuolei4 小时前
Eclipse 快捷键
java·ide·eclipse
2501_916008896 小时前
iOS 性能测试的深度实战方法 构建从底层指标到真实场景回放的多工具测试体系
android·ios·小程序·https·uni-app·iphone·webview
w***95496 小时前
SQL美化器:sql-beautify安装与配置完全指南
android·前端·后端
r***12386 小时前
若依微服务中配置 MySQL + DM 多数据源
android·mysql·微服务
ALex_zry7 小时前
MySQL连接数管理与优化实操经验分享
android·mysql·adb
努力成为大牛吧8 小时前
Pycharm 接入 Deepseek API完整版教程
ide·python·pycharm