【强推荐】如何生成正式签名的APK文件

2024-01-10

在本篇文章您将了解到两种生成正式签名的APK文件,当然还会了解到 gradle build gradle assemble 的区别。

  • 通过 Android Studio 生成
  • 使用 Gradle 生成

前言

首先需要了解的是并不是所有的APK文件都能成功安装在手机上 ,能够安装在Android手机上的应用都是带有签名的。可能有小伙伴有疑惑了:为什么通过Android Studio运行生成的应用程序好像没有进行过签名啊?那是因为,Android Studio 使用了一个默认的 keystore 文件帮我们自动进行了签名,可以在 Android Studio 中看到:
Gradle 面板——Tasks——android——signingReport,双击 signingReport,在控制台可以看到keystore 信息。
在这里插入图片描述
这就说明我们通过 Android Studio 运行的程序使用的都是这个 debug.keystore 文件来进行签名。
如果要想上架到应用商店,需要生成正式签名的 APK,那么问题来了,如何生成正式签名的APK 呢?本文将分享两种方法:

使用Android Studio生成正式签名的APK文件

点击 Android Studio 导航栏上的 Build——Generate signed APK ——选择APK——填写如下内容。如果没有 jks 文件的话,点击 Create new 即可生成新的。
在这里插入图片描述
其中 Validity(years)代表的是有效时长。具体信息可以添加如下内容
在这里插入图片描述
配置好信息之后,点击下一步选择release即可。
在这里插入图片描述
当点击Create后,右下角会有一个提示框:APK(s) generated successfully。当我们运行demo生成release版本时,该demo就是一个带有正式签名的APK文件。

使用Gradle生成正式签名的APK文件

在 testapp2 项目下的 build.gradle 文件中添加 signingconfigs闭包 ,并在release闭包中使用。signingconfigs闭包中添加了一个 config闭包 ,其中配置了 keystore 文件的各种信息,其中, storeFile 用于指定keystore文件的位置(文件必须已存在); storePassword 用于指定密码, keyAlias 用于指定别名, keyPassword 用于指定别名密码。

android {
    namespace 'com.example.testapp2'
    compileSdk 34
    defaultConfig {
       # 此处省略
    }
    signingConfigs {
        config {
            storeFile file('/Users/zeng/zeng.jks')
            storePassword '123456'
            keyAlias 'Zeng'
            keyPassword '123456'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }

因为我们在 buildTypes下面的 release 闭包中应用了添加的签名配置,这样当生成正式版APK文件的时候就会自动使用配置的签名信息来进行签名。赶紧生成一个带有签名的 APK 试试吧。运行下面的命令生成 apk。

gradlew :testapp2:assembleRelease
#或者
gradlew :testapp2:build
#或者
gradlew :testapp2:assemble

可能小伙伴又有疑问了? gradlew build gradlew assemble 有什么区别。
相同点:
两者在执行命令后,都会生成debug和release包。
不同点:

  • gradlew build :是一个通用的构建命令,将执行项目的整体构建过程。会编译源代码,运行单元测试,处理器资源文件,最终生成可运行的应用程序包。
  • gradlew assemble : 用于执行构建过程的部分步骤,主要是打包生成可执行文件(如APK)。与 gradlew build 不同,gradlew assemble只执行构建过程的部分流程,跳过了编译源代码和运行单元测试等步骤。它可以指定特定的构建变体,例如 gradlew assembleDebug 或 gradlew assembleRelease ,来单独构建指定的变体而非构建所有变体。

别忘记一键三连哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【强推荐】如何生成正式签名的APK文件 的相关文章

  • 在Java中将资源文本文件读取到字符串[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有办法将资源中的文本文件读入字符串 我想这是一个流行的要求 但在谷歌搜索后我找不到任何实用工具 Y
  • mysql 日期与 date_format 的比较

    我用谷歌搜索并尝试了几种方法来比较日期 但不幸的是没有得到预期的结果 我的当前记录状态如下 mysql gt select date format date starttime d m Y from data date format dat
  • 如何将wordpress从mamp推送到hostgator

    我在 mamp 中写了一个博客 想推入 hostgator 我必须像 Hostgator 一样重新创建所有内容吗在 Hostgator 上安装 WordPress http www probloggingsuccess com instal
  • 在 Vim 中以反转模式突出显示匹配项

    如何在 Vim 中使用 match 命令突出显示与给定模式不匹配的文本 所以 我想要相反的 match myGroup foo 好吧 你可以这样做 match myBaseHighlight foo 2match myGroup where
  • kdb+:使用字符串作为变量名

    如何使用字符串作为变量名 我希望在运行时构建变量名 但是如何将它用作左参数并为其赋值 Example test 1 assign error 您可以使用 set 但它会创建一个全局的 q test set 1 test 1 q test 1
  • 检查一个类是否是 Laravel 5 中的 Model

    我在 Laravel 5 2 中有这段代码 用于检查给定的数据库表名称 what 是否有自己的 Model public function manage what model Str studly Str singular what if
  • 加载视频数据集(Keras)

    我正在尝试实现 LRCN C LSTM RNN 来对视频中的情绪进行分类 我的数据集结构分为两个文件夹 train set 和 valid set 当你打开其中任何一个时 你可以找到3个文件夹 积极 消极 和 惊喜 最后 这 3 个文件夹中
  • 颜色重新映射 - 使用 3D 网格匹配目标调色板?

    假设我有颜色 FOO 它以 RGB 格式存储 我需要重新着色 FOO 以便它与颜色列表中最接近的颜色匹配 即时执行此操作 我是否无法将每种颜色的 RGB 值视为 3D 网格上的点 r x g y b z 并计算点 FOO 与每个颜色点之间的
  • 如何给gRaphael图形添加jquery点击事件?

    我用 g Raphael 做了一个图表 function var r Raphael pieChart pie r piechart 320 240 100 55 20 13 32 5 1 2 10 r text 320 100 Inter
  • 如何创建可以使用拨号盘启动的应用程序

    我想知道如何使用 Dialpad 中的一些代码启动我的 Android 应用程序 就像如果你 3214789650 它会从您的星系启动angryGps 应用程序 如何实施 Thanks 试试这个 使用广播接收器来监听去电号码 清单 xml
  • Maven 依赖项插件无法解析插件的手动指定依赖项

    我遇到了一个问题maven dependency plugin Maven版本3 2 3 maven dependency plugin版本2 10 我正在尝试引入插件依赖项 我创建了一个简单的项目
  • GetWindowLong(int hWnd, GWL_STYLE) 在 C# 中返回奇怪的数字

    我使用 GetWindowLong 窗口 api 来获取 C 中窗口的当前窗口状态 DllImport user32 dll static extern int GetWindowLong IntPtr hWnd int nIndex Pr
  • 有没有办法让 EF 5 代码优先迁移使用 ASP.NET MVC 4 中的 SQL Server 数据库来完成所有操作?

    当我开始一个新的 ASP NET MVC 4 Web 应用程序项目时 我希望它默认使用 SQL Server 来处理所有事情 默认情况下 当您运行此项目时 它会创建一个 LocalDb 实例并在其中创建以下表 网页 会员资格 网页 OAut
  • 使用 PHP 将列标题添加到 CSV 文件

    我正在尝试将 php mysql 生成的表转换为可下载的 csv 文件 当用户输入搜索参数时 将调用 mysql 表并将结果作为表返回 我使用了该线程中提供的解决方案 效果非常好 在 PHP 中为用户创建 CSV 文件 https stac
  • javascript 在提示后显示用户输入

    我想在用户完成信息输入后显示用户输入的内容 当用户到达最后一个提示时 我希望页面显示他们输入的内容 例如 如果他们在名称部分下输入 apples 我希望它在底部代码的 P1 部分中列出单词 apples 我是 javascript 的新手
  • 滚动时重用视图时保存 RecyclerView 中所选项目的状态

    我为 recyclerView 创建了一个 Adapter 和 ViewHolder 我将 itemView 的 imageButton 绑定到 Viewholder 内 并在 onBindViewHolder 中设置了一个 onClick
  • FParsec:如何组合解析器以便它们以任意顺序匹配

    任务是找到特定的键值对并解析它们 这些对可以按任何顺序出现 我的部分工作尝试 open FParsec type Parser lt a gt Parser lt a unit gt type Status Running Done typ
  • 量角器元素(..)从单独的文件返回未定义

    我正在编写一个 Protractor 测试 在我的 test step js 文件中我有 element by css getText then function text expect text to equal expectedText
  • 如何在 Lua 中实现 OO?

    Lua 没有内置对 OO 的支持 但它允许您自己构建它 您能否分享一些实现面向对象的方法 请为每个答案写一个例子 如果您有更多示例 请发布另一个答案 我喜欢将 OOP 视为容器 对象 内的数据封装以及可以使用该数据完成的操作子集 还有很多内
  • Gstreamer、rtspsrc 和负载类型

    我在从特定摄像头检索 rtsp 流时遇到困难 因为摄像头提供的 rtp 有效负载类型是 35 未分配 并且该摄像头接受的有效负载类型rtph264德佩插件的范围是 96 127 结果是 gstreamer 显示如下错误

随机推荐

  • TranslateTransform 用于 Silverlight 中的拖放

    我们正在尝试在 Silverlight 3 中实现拖放 我们希望用户能够将元素从树视图拖动到 UI 的另一部分 父元素是 Grid 我们一直在尝试将 TranslateTransform 与 MouseLeftButtonDown Mous
  • 闵氏距离在文本检索中的应用

    1 背景介绍 文本检索是现代信息处理系统中不可或缺的一部分 它的主要目标是根据用户的查询需求 从海量的文本数据中找出与查询最相关的文档 随着互联网的普及 文本数据的规模不断膨胀 这导致了传统的文本检索方法面临着巨大的挑战 为了解决这些问题
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • Counter-strike 2游戏网站网页制作设计 基于html+css 使用HTML+CSS+JavaScript完成以下任务: 1.使用WebStorm建立和管理个人网站; 2.熟练使用CSS结

    Counter strike 2游戏网站网页制作设计 基于html css Counter strike 2游戏网站网页制作设计 基于html css网页项目的设计与实现 https www bilibili com video BV1Kw
  • 2024 首发 全自动网页生成系统源码 重构版

    使用光年后台管理框架重构了这个系统 源码优点 所有模板经过精心审核与修改 完美兼容小屏手机大屏手机 以及各种平板端 电脑端和360浏览器 谷歌浏览器 火狐浏览器等等各大浏览器显示 免费制作 为用户使用方便考虑 全自动网页制作系统无需繁琐的注
  • arduino安装DHT11库

    步骤操作如下 打开Arduino IDE 在菜单栏中选择 项目 gt 加载库 gt 管理库 在库管理器的搜索框中 输入 DHT sensor library 找到 DHT sensor library by Adafruit 点击 安装 安
  • 机器智能与人类智能的合作:认知能力的提升

    1 背景介绍 在过去的几十年里 人工智能 AI 技术的发展取得了显著的进展 从早期的规则引擎和专家系统到现代的深度学习和神经网络 AI已经成功地解决了许多复杂的问题 然而 尽管如此 人工智能仍然远远低于人类智能 人类智能的强大之处在于其认知
  • AI大模型应用入门实战与进阶:深入理解Transformer架构

    1 背景介绍 自从2017年的 Attention is All You Need 一文发表以来 Transformer架构已经成为自然语言处理 NLP 领域的主流模型 这篇文章将深入探讨Transformer架构的核心概念 算法原理以及实
  • 抖音矩阵云混剪系统源码 短视频矩阵营销系统V2.2.1(免授权版)

    抖音矩阵云混剪系统源码 短视频矩阵营销系统V2 2 1 免授权版 中网智达矩阵营销系统多平台多账号一站式管理 一键发布作品 智能标题 关键词优化 排名查询 混剪生成原创视频 账号分组 意向客户 自动采集 智能回复 多账号评论聚合回复 免切换
  • 【软件测试】学习笔记-高效提交Bug

    本篇文章介绍如何才能写出一份高效的软件缺陷报告 测试工程师需要利用对需求的理解 高效的执行力以及严密的逻辑推理能力 迅速找出软件中的潜在缺陷 并以缺陷报告的形式递交给开发团队 缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁 也是测试工程
  • 2024 影视APP下载页面自适应源码

    2024 影视APP下载页面自适应源码 2024 影视APP下载页面自适应源码2024 影视APP下载页面自适应源码2024 影视APP下载页面自适应源码
  • 机器学习与人类智能的融合:未来趋势与挑战

    1 背景介绍 人工智能 Artificial Intelligence AI 是指一种以计算机程序为代表的智能方法 可以理解 学习和应用人类智能的某些方面 机器学习 Machine Learning ML 是人工智能的一个子领域 它涉及到计
  • 太阳诱电树立超高端产品概念,与电子产业同步发展

    无论是传统的手机 家电 安防 汽车 医疗 交通 建筑的智能化转型 还是从物联网 工业4 0 智能硬件 互联网 一场基于大数据 互联网 应用软件等技术的硬件复兴热潮正在席卷全球 没有新东西出来 每家都一样 这一长期以来的争议一直困扰着CEAT
  • 2024 个人官网主页php源码

    带后台KongYi Team系统 官网网站与个人官网主页php源码 该项目适用于团队 工作室等类型 全站由Layui强力驱动 及光年后台模板的使用 团队介绍 项目展示 成员列表等 多管理员 项目管理 模板切换等等功能 有着防窥Js的使用 安
  • 太阳诱电 | 电容器为什么会发热?什么是纹波电流

    电容器中存在寄生于电极和电介质的电阻成分 当纹波电流等交流电流通过电容器时 电阻的成分会产生热量 为了抑制发热 选择ESR较低的电容器非常重要 陶瓷电容器在电容器中ESR较低 非常适合抑制发热 电容器中的纹波电流主要是指电源电路中由于IC的
  • 深度强化学习的核心算法:从QLearning到Deep QNetwork

    1 背景介绍 深度强化学习 Deep Reinforcement Learning DRL 是一种通过智能体与环境的互动学习的方法 它可以帮助智能体在没有明确指导的情况下学习如何执行最佳的动作 从而最大化收益 深度强化学习结合了强化学习 R
  • 基于机器学习的贷中风险预测模型-江苏银行“随e融”杯-二等奖

    文章目录 源码下载地址 项目介绍 界面预览 项目备注 毕设定制 咨询 源码下载地址 源码下载地址 点击这里下载源码 项目介绍 基于机器学习的贷中风险预测模型 江苏银行
  • JDK21 和 ActiveMQ 6.0.1

    ActiveMQ 安装和测试 一 ActiveMQ 下载 二 ActiveMQ 安装 三 代码测试 1 Pom 依赖 2 YML配置 3 启动类 4 MQ 配置类 5 MQ 消费者
  • 心灵与计算机:解密情感处理

    1 背景介绍 情感处理是人工智能领域中一个重要的研究方向 它旨在使计算机能理解 识别和处理人类的情感 情感处理的主要应用包括情感分析 情感识别 情感挖掘等 随着大数据 深度学习和自然语言处理等技术的发展 情感处理技术已经取得了显著的进展 然
  • 【强推荐】如何生成正式签名的APK文件

    在本篇文章您将了解到两种生成正式签名的APK文件 当然还会了解到 gradle build 与 gradle assemble 的区别 通过 Android Studio 生成 使用 Gradle 生成 文章目录 前言 使用Android