当前位置: 首页 > news >正文

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 文件。

    Build Successful

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


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

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

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

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

    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):

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

    Groovy DSL (build.gradle):

    // 加载 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):

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

    Groovy DSL (build.gradle):

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

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

Gradle AssembleRelease

生成的 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)。
  • 使用强密码:为密钥库和密钥使用复杂且唯一的密码。

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

http://www.dtcms.com/a/549373.html

相关文章:

  • 做网站之前的前期徐州市网站开发
  • opencv 获取图像中物体的坐标值
  • 乐鑫推出的第三颗RISC-V物联网芯片ESP32-H2,融合蓝牙与Thread技术!
  • 08_集成学习
  • 建设平台型网站多少钱微商网站模板
  • 温州网站建设方案维护软件服务外包
  • 分享几个开源的系统,包括小程序、商城系统、二手交易等常见的系统、很容易进行二次开发 【可以参考学习】
  • Linux 环境适应 Day 1 全面笔记
  • Git 中的 MERGE_HEAD 和 HEAD 的区别?
  • TDengine 数学函数 TRUNCATE 用户手册
  • 成都外贸网站建设费用wordpress is front
  • 【Rust】异步处理器(Handler)实现:从 Future 本质到 axum 实战
  • SpringBoot + iTextPDF + Acrobat 构建动态PDF表单的完整实践
  • 如何使用Python编辑PDF文档:修改文本、添加图片、更新元数据等
  • 苹果ios系统ipa文件企业签名是什么?优势是什么?什么场合需要应用到?
  • 石家庄商城网站制作微信网站小游戏
  • Postman接口测试教程(完整版)
  • 优秀网页界面设计郑州百度搜索优化
  • 一个可本地运行的实时字幕翻译 Demo(Whisper + GPT + Streamlit),可以边说边出中英文字幕
  • 网站开发建设总结wordpress ftp存储
  • 5.2 MCP服务器
  • 建设银行 钓鱼网站如何优化一个网站
  • Android 13后台任务一键清理功能实现
  • PLC、上位机软件应用开发
  • 免费自己做网站软件建立传媒公司网站
  • STC32G12K128 串口1、2、3、定时器0、看门狗 非中断模式基本使用
  • 嵌入式下解决stat调用出现Value too large for defined data type (errno=75)的问题
  • 15、Docker swarm-2-安装与存储
  • 单片机与边缘计算机的软硬协同差异分析
  • 个股期权如何开仓的要点总结?