直接从项目中运行生成的 app-debug.apk 是用一个临时的调试密钥签名的,很多手机会因为安全策略而拒绝安装,或者在安装时给出更强的安全警告。

为什么需要签名?

给App签名主要有三个目的:

  1. 身份验证:证明这个App确实是您(开发者)创建的,而不是其他人冒充的。
  2. 完整性保证:签名可以确保App在从您电脑生成后,到用户安装前,没有被任何人篡改过。
  3. 安全更新:当用户安装了您的App后,安卓系统只允许使用同一个签名密钥的新版本App来进行覆盖更新。这就防止了恶意应用伪装成您的App更新,窃取用户数据。

如何在 Android Studio 中导出带签名的APK (详细步骤)

以下是在现代Android Studio版本中生成签名APK的完整流程。

第 1 步:打开生成向导

在Android Studio的顶部菜单栏,选择 Build -> Generate Signed Bundle / APK...

第 2 步:选择 APK 格式

弹出的窗口会让你选择是生成 Android App Bundle (.aab) 还是 APK (.apk)。

  • App Bundle (.aab):这是上传到 Google Play 商店的推荐格式,它能让Google Play为不同设备优化APK大小。
  • APK (.apk):这是传统的安装包文件,适合直接分享给他人进行安装测试。

根据您的需求,请选择 APK,然后点击 Next

第 3 步:创建或选择您的数字签名 (密钥库)

这是最关键的一步。您需要一个“密钥库 (Key Store)”文件来给您的App签名。

  • 如果您是第一次签名

    1. 点击 Create new... 按钮。
    2. 在弹出的 "New Key Store" 窗口中填写信息:
      • Key store path:选择一个位置来保存您的密钥库文件。这个文件通常以 .jks.keystore 结尾。请务必将这个文件保存在一个安全的地方,比如您的项目文件夹之外,并做好备份!
      • Password:为这个密钥库文件设置一个密码。
      • Key alias:给您的密钥起一个别名,例如 my-app-key
      • Password:为这个密钥本身设置一个密码(可以和密钥库密码相同)。
      • Validity (years):密钥的有效期。Google Play要求至少为25年,建议直接填25或更高。
      • Certificate:填写一些您的个人或公司信息,至少填写一项即可。
    3. 填写完毕后,点击 OK
  • 如果您已经有密钥库文件

    1. 点击 Choose existing...,找到您之前保存的 .jks 文件。
    2. 依次输入您的密钥库密码、密钥别名和密钥密码。

填写/选择完毕后,点击 Next

第 4 步:选择构建变体并完成

  1. Build Variants:选择 release。这会构建一个为发布而优化的版本。
  2. Signature Versions:请同时勾选 V1 (Jar Signature) 和 V2 (Full APK Signature)。这样可以确保您的App在所有新旧版本的安卓系统上都有最好的兼容性。
  3. 点击 Finish

Android Studio会开始构建您的应用。完成后,右下角会弹出一个通知。

第 5 步:找到并分享APK文件

在弹出的通知中,点击蓝色的 locate 链接,Android Studio会自动在您的文件浏览器中打开生成APK的文件夹(通常在 YourProject/app/release/ 目录下)。

您会找到一个名为 app-release.apk 的文件。这个就是最终带签名的、可以分享给任何人安装的APK文件了。

如何让其他人安装

  1. 将这个 app-release.apk 文件通过微信、QQ、邮件、钉钉或USB等任何方式发送给对方。
  2. 对方在手机上接收到文件后,点击打开。
  3. 如果对方的手机没有开启“允许安装来自未知来源的应用”选项,系统会弹出提示。他们需要根据提示去手机的“设置”中,为文件管理器或他们接收文件的App(如微信)开启这个权限。
  4. 开启权限后,返回并重新点击APK文件即可成功安装。

【极其重要!】

请务必妥善、安全地备份您的密钥库文件 (.jks) 及其所有密码。如果丢失,您将永远无法再发布使用相同签名的更新版本。Google Play也无法帮您找回。您需要像保管银行卡密码一样保管它!

密码:qianyuan

安卓APP导出的更多相关文章

  1. 安卓APP测试之使用Burp Suite实现HTTPS抓包方法

    APP的测试重点小部分在APP本身,大部分还是在网络通信上(单机版除外).所以在安卓APP测试过程中,网络抓包非常重要,一般来说,app开发会采用HTTP协议.Websocket.socket协议,一 ...

  2. 安卓APP和小程序渗透测试技巧总结

    安卓APP和小程序渗透测试技巧总结 免责声明: 安卓7以上抓取https流量包 证书信任 首先安装OpenSSL,此步骤不再赘述,可以参考百度. 然后安装模拟器(我使用的是夜神模拟器). 导出需要的证 ...

  3. 关于安卓APP的启动界面

    刚学安卓App开发的朋友们,可能会遇到一个问题,就是人家的App刚进入会有一个页面出现一会儿后消失,   这个页面可以用来打广告,也可以声明App的主题,所以说这个启动页面至关重要,接下来,我把我的代 ...

  4. 安卓APP测试验证点总结

    最近较懒,加之闺女出生后记忆没完全恢复,总是忘东忘西,关于安卓APP测试的验证点还是总结一下,方便设计测试用例时查阅,也给各位博友参考! 1.除APP的正常功能点外,还有以下验证点: 安装/卸载(考虑 ...

  5. 【转载】安卓APP架构

    注:本篇博文转载于 http://my.oschina.net/mengshuai/blog/541314?fromerr=z8tDxWUH 本文介绍了文章作者从事了几年android应用的开发,经历 ...

  6. 安卓app设计规范整理和Android APP设计篇(转)

    随着安卓智能手机不停的更新换代.安卓手机系统越来越完美,屏幕尺寸也越来越大啦!比如最近小米的miui 6的发布和魅族手机系统的更新等等. 以小米MIUI6的安卓手机来说,MIUI6进行了全新设计,坚持 ...

  7. 如何做个简单安卓App流程

    有同学做毕业设计,问怎样做个简单安卓App流程,我是做服务端的,也算是经常接触app,想着做app应该很简单吧,不就做个页面,会跳转,有数据不就行了,我解释了半天,人家始终没听懂,算了,我第二天问了下 ...

  8. 安卓App流量统计

    http://keepcleargas.bitbucket.org/2013/10/12/android-App-Traffic.html 安卓App流量统计 12 OCT 2013 android流 ...

  9. 当前主流的安卓APP开发IDE

    什么是主流的开发安卓APP的方式? 我是去年4月份接触的Android开发,因此特别有感触,可以明显的感受到安卓APP主流开发方式的改变. 去年,2015年年初,各大安卓开发群大部分大牛在用Eclip ...

  10. 仿春雨医生 安卓app(android)

    仿春雨医生 安卓app(android) 目前APP处与开发完善中,可过程序自下载更新,如有BUG报错,请联系QQ 131 065 1206 支持安卓(android) .IOS(IPHONE),PA ...

随机推荐

  1. Django 中URL和Views相关知识梳理(极简版)

    提示:仅供梳理参考,很多相关的细节内容忽略. 1.URL  (1)URL匹配的规则是正则,关于正则不再赘述. (2)URL优先级顺序:从urlpatterns的底部开始搜索,一直往上搜索,需要注意的是 ...

  2. manim 动画效果总结

    ManimCE作为一个强大的动画制作框架,它为创作者提供了丰富多样的动画效果,无论是文字.图形还是其他元素,都能通过这些动画效果呈现出生动.有趣的视觉体验. 本文将详细总结ManimCE(v0.19. ...

  3. L3-1、掌控多轮对话的节奏 -Prompt 结构与上下文管理全攻略

    一.多轮对话中的上下文挑战与常见问题 在与大语言模型(LLM)进行多轮对话时,我们常常面临以下挑战: 上下文丢失:模型"遗忘"之前提到的信息 指代不明:难以理解代词指向的内容 话题 ...

  4. AI工具 Cursor + MCP服务:提效与落地的完美组合

    在当今软件开发快速演进的时代,开发者们越来越依赖于人工智能辅助工具来提升效率与质量.最近我在实际项目中深度使用了 Cursor 编辑器 和 MCP(Model Context Protocol)服务, ...

  5. WebSocket 实时通信(二)

    WebSocket 即时消息推送系统 1. 项目概述 1.1 项目背景 在现代 Web 应用中,实时通信功能越来越重要,例如在线聊天.实时通知.股票行情更新等.本项目基于 WebSocket 技术,构 ...

  6. @Transactional嵌套事务失效异常Transaction rolled back because it has been marked as rollback-only

    摘要:注解@Transactional嵌套事务失效,抛出异常ransaction rolled back because it has been marked as rollback-only,解决办 ...

  7. 如何在Mac系统上把U盘分成2个区?

    插入U盘后,使用命令行执行如下命令: diskutil partitionDisk /dev/disk8 GPT MS-DOS TESLAMUSIC 7% ExFAT TESLADRIVE 93% 第 ...

  8. 20244104陈思淼 《Python程序设计》实验三报告

    课程:<Python程序设计> 班级:2441 姓名:陈思淼 学号:20244104 实验教师:王志强 实验日期:20254月20日 必修/选修: 公选课 1.实验内容 创建服务端和客户端 ...

  9. RDP远程桌面连接服务

    漏洞原理 Windows远程桌面内核驱动处理MS_T120通道时(管理数据传输时)没有对数据的数据包进行验证限制,没有将信道的指针删除(之后会回来访问恶意的数据包),攻击者无需认证即可向RDP服务(3 ...

  10. Coze/Dify/FastGPT/N8N :该如何选择Agent平台?

    你好,小钗在医疗AI.教育AI.管理AI有丰富的经验 关注公众号,回复1,与我交个朋友吧 书接上文: AI创业如何选择Agent平台,Coze.Dify.腾讯元器?可能都不是 Coze案例,个人知识库 ...