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

Android Studio学习记录1

Android Studio打包APK

本文为个人学习记录,仅供参考,如有错误请指出。本文主要记录在Android Studio中开发时遇到的问题和回答。


随着学习的深入,项目完成并通过测试之后免不了需要进入打包环节。这篇文章主要记录一下尝试打包APK的过程。我将使用Mac系统进行开发,同时参考了些许其他博主的文章。

1.在Android Studio中打开需要打包的项目,在顶部找到“Build”按钮,选择“Build->Generate Signed App Bundle or APK…”。

Alt
2.点击之后,选择“APK”按钮,然后点击“Next”。

在这里插入图片描述
3.接下来分成两种情况,如果是第一次打包而且没有密钥文件则点击“Create new…”进行详细的密钥配置,如果有密钥文件则点击“Choose existing…”使用现成的文件即可进行下一步。此处的“Remember passwords”根据需要勾选即可,勾选上下次打包可以方便一点。

在这里插入图片描述
如果是第一次打包,点击“Create new…”之后的具体内容如下,根据实际要求填写吧,其中Validity(years)表示密钥的有效年限,填写好之后点击“OK”即可回到上图页面:

在这里插入图片描述
4.上述编写好密钥文件之后,会进入到这个页面,可以选择需要包的版本,如果用于调试,可以选择debug版本;如果用于发布,可以选择release版本;此处的jenkins好像是一个自动化打包的选项,需要通过插件实现,可以忽略。我选择的是release版本。选择好之后点击“Create”即可进行打包,等待编译完成。

  • 区别:

    debug版本:该版本主要用于调试,是未发行的。

    release版本:release版本有“签名”的概念,就是以包名作为唯一标识,如果两个App的包名相同(若无签名),则后来安装的App就会对其进行覆盖安装。但Android要求App发布都需要“签名”,正因“签名”的存在,则不会覆盖安装。

  • “签名”的作用:

    确定发布者的身份;确保App的完整性,防止文件内容被替换。

在这里插入图片描述
显示以下提示,说明打包成功。

在这里插入图片描述
此时,文件列表中应该会出现一个新的文件夹,左上角切换到“Project”显示模式,可以找一找刚才创建时的路径下有一个名为你选择的版本的文件夹,我选择了“release”版本,所以出现了“release”文件夹,其中的.apk文件就是打包好的文件,可以理解为安装包。

在这里插入图片描述
或者点击上述“打包成功提示”中的“locate”按钮,可以快速找到apk文件。

在这里插入图片描述
5.接下来就是将apk文件安装至模拟器中即可进行测试,或者发送至真实的安卓手机上也可以进行安装测试。我使用的是Android Studio自带的模拟器,使用其他模拟器也完全可以。直接将刚才打包好的文件拖至模拟器显示器中即可自动安装你的项目。整体还是比较简单的,根据实际需要打包即可。

点击软件页面右侧功能栏中的这个“手机”图标,即可打开设备管理器或者模拟器,点击左上角的“+”按钮可以创建新的模拟器,可以添加你需要的类型的模拟器。

在这里插入图片描述

注意⚠️:

  • App只能升级不能降级,如果设备上已经有一个版本,需要安装一个更低版本,会出现安装失败的提示,可以尝试删除之前安装的版本,或在build.gradle.kts文件中的“versionCode”对版本进行修改。
  • App签名不一致也会导致安装失败。例如之前安装了debug版本,又需要安装release版本,可能会因为签名冲突导致安装失败。
http://www.xdnf.cn/news/2668.html

相关文章:

  • Python(15)迭代器和生成器
  • IP SSL证书常见问题:快速实现HTTPS加密
  • 使用Docker安装Harbor
  • MCP 模型上下文协议配置MCP Server开发实践
  • android录音生成wav
  • Spring Boot定时任务
  • 深入浅出JavaScript常见设计模式:从原理到实战(2)
  • 一文读懂Tomcat应用之 CentOS安装部署Tomcat服务
  • rabbitmq-集群部署
  • 当所有人都用上先进ai,如何保持你的优势?
  • 用Postman验证IAM Token的实际操作
  • Error和Exception的区别
  • 第9讲:坐标轴美学深度优化——刻度线、网格线与边框控制
  • mapbox V3 新特性,室内楼层多层同时三维展示(可单层切换),类似蜂鸟视图效果
  • 深度学习任务评估指标
  • 从普查到防控:ArcGIS洪水灾害全流程分析技术实战——十大专题覆盖风险区划/淹没制图/水文分析/洪水分析/淹没分析/项目交流,攻克防洪决策数据瓶颈!
  • QT:自定义ComboBox
  • 自动驾驶领域专业词汇(专业术语)整理
  • leetcode 206. 反转链表
  • 湖北理元理律师事务所:债务管理领域的平台化创新探索
  • 回归预测 | Matlab实现DBO-LightGBM蜣螂算法优化轻量级梯度提升机多输入单输出回归预测,作者:机器学习之心
  • 嵌入式开发面试典型编程题解析:排序算法、指针操作、字符处理、递归原理等基础原理的深度解析。
  • 第33周JavaSpringCloud微服务 分布式综合应用
  • echarts+标签+指引线
  • 【javascript】竞速游戏前端优化:高频操作与并发请求的解决方案
  • 开源模型应用落地-全能音频新纪元-Kimi-Audio-7B-Instruct-重塑多模态交互边界
  • Transformer数学推导——Q29 推导语音识别中流式注意力(Streaming Attention)的延迟约束优化
  • 核心要点:线程
  • 解决MacOS端口被占用问题
  • 升级xcode15 报错Error (Xcode): Cycle inside Runner