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

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版本,可能会因为签名冲突导致安装失败。

相关文章:

Android Studio学习记录1

Android Studio打包APK 本文为个人学习记录,仅供参考,如有错误请指出。本文主要记录在Android Studio中开发时遇到的问题和回答。 随着学习的深入,项目完成并通过测试之后免不了需要进入打包环节。这篇文章主要记录一下尝试打包APK的过程。我…...

【JAVA ee初阶】多线程(3)

一、出现线程安全的原因 1.【根本原因】线程的调度执行时随机的(抢占式执行)->罪魁祸首 2.多个线程同时修改同一个变量 如果是一个线程修改一个变量 或者 多个线程读取同一个变量 或者 多个线程修改不同变量 这些都没事。 3.修改操作不是原子的&a…...

【Java ee初阶】多线程(4)

一、java是怎么做到可重入的 java中,通过synchronized进行加锁,指定一个()包含了一个锁对象。(锁对象本身是一个啥样的对象,这并不重要,重点关注锁对象是不是同一个对象) 后面搭配…...

Day15(贪心算法)——LeetCode121.买卖股票的最佳时机55.跳跃游戏

1 LeetCode121.买卖股票的最佳时机(LeetCode121) 1.1 题目描述 题目描述如下:   示例如下: 1.2 问题分析及解决 要求最大利润,即当天与之前天的价格之差最大值。因此我们可以遍历数组,记录下当前遇到的最小值,然后用当天的价…...

2025汽车制造企业数字化转型路径参考

以应用场景作为切入点,引导相关企业推进数字化深度转型和规模化改造,是目前实践探索出来的一条可行路径。 汽车制造行业是相对集聚的制造业领域,通过搭建“转型场景图谱——转型通用工具——转型路径指引”分析框架,聚焦需求侧共…...

雷池WAF的身份认证 - GitHub

雷池支持通过 GitHub 认证的方式,让用户使用 GitHub 身份安全登录应用或网站。使用此功能需要 GitHub 账号 。 第一步:在 GitHub 创建一个 OAuth 应用 可参阅 GitHub 官方文档,创建一个 GitHub OAuth 应用,并获取应用的 ClientI…...

【Linux】第十二章 安装和更新软件包

目录 1. 什么是RPM? 2. dnf是什么,它和rpm有什么联系和区别? 3. RHEL 中如何做才能启用对第三方存储库的支持? 4. 怎么理解RHEL9中的应用流(Application Streams)和模块(Modules)? 5. RHEL9 有两个必要的软件存储…...

【权限模型】RBAC模型详解

大家好,我是jstart千语。今天给大家介绍一下鉴权模型RBAC,传统的鉴权模式就是基于用户和权限之间的多对多关系。而RBAC就更加的精准,更好管理。 RBAC介绍 RBAC(Role-Based Access Control)是一种通过角色(…...

tree命令

tree [选项] [目录...] 指定要显示的目录。如果没有指定目录,tree 会显示当前目录及其子目录结构。 常用选项 -a 显示所有文件和目录,包括隐藏文件(以 . 开头的文件)。 -d 只显示目录,不显示文件。 -L LEVEL …...

【Vue.js】组件数据通信:基于Props 实现父组件→子组件传递数据(最基础案例)

概览 前言父子通信流程关键技术点关键规则 实战1. 在父组件中注册子组件2. 子组件接收父组件传入的数据补充与总结 前言 在 Vue 3 中,父组件向子组件传递数据是通过props实现的。父组件在子组件的标签上绑定数据,子组件通过定义props接收这些数据。这种…...

信创时代技术栈选择与前景分析:国产替代背景下的战略路径与实践指南

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...

Python内置方法干货总结

如果你还在为提升Python代码能力发愁,那么掌握内置方法就是你的捷径!很多初学者和进阶者忽略了这一“宝藏”,其实,Python的内置方法不仅能让你代码更简洁,还能大幅提升开发效率。今天,咱们就来一次系统梳理…...

小草GrassRouter多卡聚合路由器聚合卫星、MESH网络应用解决方案

一、多网融合解决方案 卫星网络融合‌ 支持接入卫星通信模块,在无地面网络覆盖的极端场景(如偏远山区、海洋救援)下,形成“5G卫星”双链路冗余传输,卫星链路可作为核心通信备份,确保关键指令和视频数据实…...

Spring反射机制

Spring反射机制 反射机制是加载类时,在运行时动态地获取类的信息,并且可以操作类或对象的属性、方法、构造函数等成员的能力。在 Java 里,反射机制的实现主要依赖于 java.lang.reflect 包下的多个类,以及 java.lang 包中的 Class…...

PCB硬件电路设计_pcb布线设计

1.MCU最小系统电路 这些电路都会非常接近MCU,他们的可靠性决定了MCU能否正常工作。 外围电路,为了布线整齐美观,尽量避免打过多的通孔。在布局的时候走线的顺序和元器件顺序尽可能的保持一直避免走线交叉。 2.晶振电路布线 一般情况下我们…...

Qt开发:XML文件的写入与读取

文章目录 一、使用 QDomDocument操作节点1.1 将信息写入XML文件中1.2.从XML文件中读取信息 二、使用 QXmlStreamWriter操作节点2.1 将信息写入XML文件中2.2 从XML文件中读取信息 三、总结 一、使用 QDomDocument操作节点 1.1 将信息写入XML文件中 #include <QDomDocument&…...

PCI/PXI 总线的可编程电阻卡

701X 系列是阿尔泰科技基于 PCI/PXI 总线的可编程电阻卡&#xff0c;多种电阻范围可选&#xff0c;稳定性好&#xff1b;准确 度低至 0.2%&#xff1b;分辨率设置精细&#xff0c;可低至 0.125Ω&#xff0c;适用于传感器仿真应用。 701X 系列高精度程控电阻模块具有高设置分辨…...

火语言RPA--腾讯云存储

【组件功能】&#xff1a;存储本地文件至腾讯云 选择本地文件&#xff0c;通过腾讯云存储配置上传至腾讯云对象存储的指定地域指定存储桶指定路径。 配置预览 配置说明 SecretId 支持T或# 前往官网获取或创建。参考链接&#xff1a;https://console.cloud.tencent.com/cam/…...

使用POI和EasyExcel使用导入

1.使用POI导入 1.1导入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency> 1.2创建工具类 package com.ruoyi.common.utils.poi;import org.ap…...

AWS PrivateLink vs Lattice:深度解析两大网络服务的异同

导语: 在AWS的网络服务生态中,PrivateLink和Lattice都是备受关注的解决方案。本文将深入探讨这两项服务的核心特性、应用场景以及它们之间的关键区别,帮助您在复杂的网络架构设计中做出明智的选择。 一、AWS PrivateLink 概述 定义 AWS PrivateLink 是一种网络服务,允许您…...

Linux系统编程---exec簇:进程的加载与替换

1、exec簇基础 在Linux中&#xff0c;用于加载并执行指定程序的API有exec簇和system函数。 exec簇的进程替换不会创建一个新的进程&#xff0c;只是加载新的程序代码和数据&#xff0c;替换当前进程执行的程序代码。 system函数的进程替换是创建一个新的子进程&#xff0c;然后…...

C++ 之 【模拟实现 list(节点、迭代器、常见接口)】(将三个模板放在同一个命名空间就实现 list 啦)

1.前提准备 (1) list 的底层结构一般是带头双向循环链表 (1)为避免命名冲突&#xff0c;需要创建一个命名空间来存放模拟实现的 list (2)下面模拟实现list时&#xff0c;声明和定义不分离(具体原因后续讲解) 2.完整实现 2.1 链表节点 template<class T>//节点写成类模板…...

数字图像处理 -- 眼底图像血管分割方法

算法框架 基于深度学习的 U-Net 架构&#xff0c;结合注意力机制&#xff08;Attention Gate&#xff09;与多尺度特征提取&#xff0c;以提高细小血管的检测能力。整体流程如下&#xff1a; 输入图像预处理&#xff1a;提取绿色通道 & CLAHE 增强数据增强&#xff1a;旋…...

基于ffmpeg的音视频编码

1 音频编码 本质上是由pcm文件转到一个协议文件 比如说aac协议 1.1 音频基本知识回归 比特率 比特率是指单位时间内传输或处理的比特&#xff08;bit&#xff09;数量&#xff0c;通常用 bps&#xff08;bits per second&#xff0c;比特每秒&#xff09;来表示。它是衡量数…...

Android wifi开发调试总结

Android wifi开发调试简单总结 文章目录 Android wifi开发调试简单总结一、前言二、wifi demo开发1、开关和连接2、wifi开启主要流程3 、wifi主要广播4、相关日志5、demo示例 三、其他1、Wifi开发小结2、其他wifi知识小结&#xff08;1&#xff09;Android无线Wifi开发&#xf…...

LLVIP、KAIST、M3FD数据集

LLVIP、KAIST、M3FD数据集 &#xff08;可见光红外&#xff0c;双模态数据集&#xff0c;已配准已对齐已清洗&#xff0c;已处理为txt格式&#xff0c;YOLO可直接训练&#xff09; 电子产品&#xff0c;一经出售&#xff0c;概不退换 算法设计、毕业设计、期刊专利&#xff01;…...

datasets 数据处理封装后,统一处理流程以避免Dataset Map顺序依赖问题

文章目录 处理流程说明小结 在实际项目中&#xff0c;我们常常需要对数据集进行预处理。为了规范操作&#xff0c;我封装了一个基础数据集处理类&#xff1a; class DatasetAbstract:"""所有数据集都应包含以下几个字段&#xff1a;* question&#xff1a;用户…...

【学习笔记】机器学习(Machine Learning) | 第四章(3)| 多变量线性回归

机器学习&#xff08;Machine Learning&#xff09; 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习&#xff08;Machine Learning&#xff09;简要声明 三、特征工程与多项式回归&#xff08;一&#xff09;特征工程&#xff1a;从数据中发…...

将本地Springboot项目部署到Linux服务器

1、打包后端项目 在IDEA的终端上执行命令 mvn clean package "-Dmaven.test.skiptrue" 在target目录下查看jar包是否存在 2、idea运行jar包&#xff08;可选&#xff09; 在IDEA的终端上执行命令 # 进入jar包所在目录 E:\LzpWorkspaces\lzp-records> cd .\tar…...

无人设备遥控器之实时数据保护技术篇

无人设备遥控器的实时数据保护技术是保障设备安全运行、避免信息泄露或恶意干扰的核心手段&#xff0c;其核心目标是在复杂电磁环境和网络攻击威胁下&#xff0c;确保指令传输的完整性、保密性和抗干扰性。 一、技术实现路径 链路层加密与认证 动态密钥协商&#xff1a;采用…...

【优秀三方库研读】【性能优化点滴】odygrd/quill 解决伪共享

一、伪共享&#xff08;False Sharing&#xff09;问题本质 当不同CPU核心频繁修改**同一缓存行&#xff08;Cache Line&#xff09;**中的不同变量时&#xff0c;会导致严重的性能下降。现代CPU的缓存系统以缓存行&#xff08;通常64字节&#xff09;为单位操作内存&#xff…...

JavaScript性能优化实战(6):网络请求与资源加载优化

引言 在现代Web应用开发中,网络性能已成为影响用户体验的关键因素。据统计,用户等待页面加载的耐心通常不超过3秒,超过这个时间,约40%的用户会选择离开。此外,Google的研究表明,页面加载时间每增加0.5秒,流量就会下降约20%。因此,优化网络请求和资源加载不仅关乎用户体…...

re题(49)BUUCTF-crackMe

BUUCTF在线评测 int wmain() {FILE *v0; // eaxFILE *v1; // eaxchar v3; // [esp3h] [ebp-405h]char v4[256]; // [esp4h] [ebp-404h] BYREFchar Format[256]; // [esp104h] [ebp-304h] BYREFchar v6[256]; // [esp204h] [ebp-204h] BYREFchar v7[256]; // [esp304h] [ebp-10…...

Python中的单例模式:深入探索元类与装饰器实现

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 单例模式(Singleton Pattern)是设计模式中的一种重要模式,确保一个类在整个应用中只有一个实例,并且提供全局访问点。Python语言作为一…...

深入解析 Babylon.js 中的 TransformNode.lookAt 方法

在 3D 开发中&#xff0c;控制对象朝向是一个基础但关键的需求。Babylon.js 作为一款强大的 Web3D 引擎&#xff0c;提供了 TransformNode.lookAt 方法来实现这一功能。本文将全面解析这个方法的使用技巧、参数含义以及常见应用场景。 方法基础 TransformNode.lookAt 的基本签…...

SpringCloud组件——Gateway

一.网关 1.问题提出 我们通过Eureka&#xff0c;Nacos解决了服务注册&#xff0c;服务发现的问题&#xff0c;使用SpringCloud LoadBalance解决了负载均衡的问题&#xff0c;使用OpenFeign解决了远程调用的问题。 但是当前所有微服务的接口都是直接对外暴露的&#xff0c;可…...

Boost 库安装 (windows 11)

Boost 库安装 (windows 11 1 下载2 生成3 使用 1 下载 下载地址&#xff1a;https://www.boost.org/ 有的时候会需要历史版本下载&#xff1a; https://www.boost.org/users/history/ 2 生成 1、解压后点击 bootstrap.bat&#xff0c;会生成可执行程序b2.exe 2、双击运行b2.…...

lmms-eval--微调实战笔记

lmms-eval--大模型调用平台&#xff0c;方便新手上手大模型微调 lmms-eval的更多用法,没有mathversehttps://github.com/EleutherAI/lm-evaluation-harness.git 单卡运行&#xff0c;模型gpt-j-6B&#xff0c;数据集hellaswag git clone --depth 1 https://github.com/Eleuthe…...

序列密码算法ShanLooog512设计原理详解

序列密码算法ShanLooog512设计原理详解 ShanLooog512(闪龙512)为序列密码算法&#xff0c;内部状态为512比特&#xff0c;密钥长度为128或256比特&#xff0c;轮函数为FFFFFFFF&#xff0c;循环轮数为24轮&#xff0c;输出密钥流为512比特的状态。与Salsa20类似&#xff0c;内…...

Matplotlib可视化基础

1. 折线图 matplotlib.pyplot.plot() # 主要参数&#xff1a; x,y -- 接收array&#xff0c;表示X轴和Y轴对应的数据&#xff0c;无默认 color -- 接收特定string&#xff0c;指定线条的颜色&#xff0c;默认为None linestyle -- 接收特定string&#xff0c;指定线条的类型…...

Linux 内核网络协议栈中的关键数据结构:inet_skb_parm 与 ip_options

在 Linux 内核的网络协议栈中,数据包的高效处理依赖于一系列精心设计的数据结构。这些结构体不仅需要存储网络数据的元信息,还需支持复杂的协议逻辑(如路由、分片、安全策略等)。本文聚焦两个核心结构体 struct inet_skb_parm 和 struct ip_options,解析它们的设计原理、功…...

oracle 数据库查询指定用户下每个表占用空间的大小,倒序显示

oracle 查询指定用户下每个表占用空间的大小&#xff0c;倒序显示 使用场景&#xff1a;数据分析&#xff1b;导出医院正式库到开发环境时&#xff0c;查询出占用表空间高的业务表、导出时排除该表 在Oracle数据库中&#xff0c;要查询指定用户下每个表占用空间的大小并以倒序…...

Missashe考研日记-day29

Missashe考研日记-day29 1 专业课408 学习时间&#xff1a;3h学习内容&#xff1a; 今天先是把虚拟存储剩余的课听完了&#xff0c;然后就是做课后选择题&#xff0c;57道&#xff0c;已经接受了OS课后题尤其多的事实了。解决并且理解完习题之后就开始预习文件管理的内容&…...

【AI】【MCP】搭建私人王炸MCP自动化工作流

目录 一、什么是MCP 二、MCP大集合 三、准备工作 3.1 安装node.js 3.2 安装vscode 3.3 安装cline插件 3.3.1 安装 3.3.2 配置Cline 四、配置MCP服务 4.1 Search-mcp服务 4.2 playwright-mcp 服务 前言&#xff1a;梦想组合&#xff0c;轻松办公&#xff0c;告别手动&a…...

多元函数微分之传统方法和全微分法

一、传统方法 使用链式法则&#xff0c;先对中间变量&#xff08;如 u,v&#xff09;求偏导&#xff0c;再乘以中间变量对最终变量&#xff08;如 x,y&#xff09;的偏导。 二、全微分法 基于全微分形式不变性&#xff0c;直接对 zf(u,v) 求全微分 dz&#xff0c;再代入 du 和…...

新手SEO基础优化全解析

内容概要 对于刚接触SEO的新手而言&#xff0c;系统化理解优化逻辑是避免无效操作的关键。本文将从基础概念入手&#xff0c;逐步拆解搜索引擎排名的影响要素&#xff0c;围绕关键词分析、技术优化、内容策略三大核心模块&#xff0c;提供可落地的操作框架。通过结合工具使用说…...

MATLAB退火算法和遗传算法解决旅行商问题

模拟退火算法和遗传算法都是常用于解决旅行商问题&#xff08;TSP&#xff09;的优化算法&#xff0c;它们在原理、搜索方式、收敛速度和适用场景等方面存在一些区别&#xff1a; 原理 模拟退火算法&#xff1a;模拟退火算法的灵感来源于固体退火原理。固体在加热后缓慢冷却时…...

喜马拉雅卖身腾讯音乐:在线音频独立时代的终结

坦白说,这条消息一出来,喜马拉雅被卖掉不太奇怪,但是腾讯音乐会收购,还是有点意外。 喜马拉雅之前一度被称为中国版Audible平台,在过去几年里,活生生地把一手好牌打得稀烂。如今走到“卖身”这一步,既是无奈,也是必然。 简单回顾一下背景: 2012年,喜马拉雅成立,一…...

简单理解https与http

都是超文本传输协议&#xff0c;一个安全一个不安全&#xff0c;名字长的安全&#xff0c;名字短的不安全。 安全与不安全是居于什么分别的&#xff1f; 通过加密 http无加密。 httpshttp SSL/TSL&#xff08;加密&#xff09;来保障数据安全。加密传输 身份验证 SSL/TLS…...

打造即插即用的企业级云原生平台——KubeSphere 4.1 扩展组件在生产环境的价值全解

目录 打造即插即用的企业级云原生平台——KubeSphere 4.1 扩展组件在生产环境的价值全解 1. 可观测体系&#xff1a;WhizardTelemetry 全家桶 2. 平台与多集群治理 3. CI/CD 与交付效率 4. 网络与流量入口 5. 安全与合规 6. 存储与数据保护 7. 平台集成优势 结语 打造…...