详解Android Studio正式签名进行调试的实现步骤
作者:lqh 发布时间:2021-12-30 21:56:07
详解Android Studio正式签名进行调试的实现步骤
在Android Studio中,可以使用Gradle进行打包时自动签名。其实Android Studio默认会给调试应用加上Debug签名,但有时候调一些第三方SDK时,需要正式签名才能调起来,所以接下来分享一下使用Gradle自动签名的方法。
一、创建签名文件
打开AS,选择Build->Generate Signed APK,选择要打包的项目,点击Next,再点击Create new...创建签名文件
填写签名文件响应信息,如下所示,Password、Key-Alias、Key-Password这三个值需要记住,然后点击OK,完成创建。
完成之后,在相应路径生成一个jks签名文件。如果选择手动再进行打包,就可以选择该签名文件,然后对应填入密码与别名,进行签名,也可以。
二、配置Gradle自动打包
拷贝签名文件到主工程根目录,打开主工程的build.gradle文件,在android节点下,增加以下内容:
signingConfigs {
release {
storeFile file('keystore.jks')
storePassword '123456'
keyAlias 'yyh'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
storeFile file:签名文件,如果放在其他路径,需要对应修改
storePassword:密码(刚才填的第一个密码)
keyAlias:别名
keyPassword:别名密码
然后重新build一下工程,展开右边栏Gradle选项卡,如下所示:
assembleRelease,即为正式签名。双击assembleRelease,则会开始执行命令:
执行完毕可以看到BUILD SUCCESSFUL,说明正式签名打包成功了。展开工程的build文件夹,可发现有app-release.apk,即为正式版本。
下次直接run起来的时候,就带正式签名了。这可比手动签名省事多啦~~
当然,为了提高安全性,我们还可以把那四个属性作为变量配置在主工程的gradle.propreties,然后在build.gradle引用变量就可以了。如下:
这样也能起到同样的效果。
三、应用程序签名的意义
(1)保障开发者的合法权益
在我们对应用程序进行打包签名后,即表示此应用程序是签名人或机构所开发的,对此应用程序具有所有权。
(2)预防应用程序替换
应用程序签名可以防止部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改。APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。实际上就是一种标识。
(3)保证应用程序版本的一致性
一般应用程序都会有更新,即版本的升级。如果应用程序的签名不一致,是无法进行更新替代的。所以应用程序的签名是保证当前应用程序顺利进行更新安装的前提。
(4)可以通过权限(permission)的方式在多个程序间共享数据和代码
Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。另一方面,Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。


猜你喜欢
- 本文实例讲述了Java实现的Base64加密算法。分享给大家供大家参考,具体如下:一 算法实现1、JDK2、Commonc Codec3、B
- 本文实例讲述了C#获取文件创建时间的方法。分享给大家供大家参考。具体如下:C#获取文件创建时间,主要用到了FileInfo的Creattio
- 本文实例讲述了C#利用Random得随机数求均值、方差、正态分布的方法。分享给大家供大家参考。具体如下:最近在做中小学试卷分析系统,其中数据
- 本文实例讲述了C#使用HttpDownLoadHelper下载文件的方法。分享给大家供大家参考。具体实现方法如下:using System;
- CAS 的基本概念CAS(Compare-and-Swap)是一种多线程并发编程中常用的原子操作,用于实现多线程间的同步和互斥访问。 它操作
- 分页是Java Web项目常用的功能,昨天在Spring MVC中实现了简单的分页操作和搜索分页,在此记录一下。使用的框架为(MyBatis
- 前言在上篇文章讲到了如何配置单数据源,但是在实际场景中,会有需要配置多个数据源的场景,比如说,我们在支付系统中,单笔操作(包含查询、插入、新
- 本文实例为大家分享了flutter Container容器实现圆角边框的具体代码,供大家参考,具体内容如下在这里使用 Container 容
- 前言本文是精讲RestTemplate第7篇,前篇的blog访问地址如下:RestTemplate在Spring或非Spring环境下使用精
- 前言在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似ke
- 最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化,窗口大小调整等,都可以
- 短网址,忽然一下子就冒出来的东西,长长的一个URL,提交过去,出来就只有短短的一个URL了,看起来似乎挺神奇,其实简单分析一下,明白其中的原
- 前言:最新Servlet 3.0 * 的使用1.pom.xml添加需要使用的依赖<project xmlns="http:/
- 一. Dispatchers.IO1.Dispatchers.IO在协程中,当需要执行IO任务时,会在上下文中指定Dispatchers.I
- 在Android平台上面,应用程序OOM异常永远都是值得关注的问题。通常这一块也是程序这中的重点之一。这下我就如何解决OOM作一点简单的介绍
- 本文实例为大家分享了Android实现随手指移动小球的具体代码,供大家参考,具体内容如下这个随手指移动小球,首先要使用paint画笔在can
- Java基础编写猜数游戏,供大家参考,具体内容如下设计内容及要求产生一个100以内的随机数,游戏者进行猜数,猜中即胜,猜不中,提示是大了还是
- 详解Http请求中Content-Type讲解以及在Spring MVC中的应用引言: 在Http请求中,我们每天都在使用Content-t
- 目录对象的创建创建方式对象的内存布局创建过程对象的内存分配分配方式并发安全代码优化逃逸分析的不成熟性实际的对象空间分配过程对象的访问句柄直接
- 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有