Android Studio 使用正式签名进行调试
在Android Studio中,能够使用Gradle进行打包时自己主动签名。
事实上Android Studio默认会给调试应用加上Debug签名,但有时候调一些第三方SDK时。须要正式签名才干调起来。所以接下来分享一下使用Gradle自己主动签名的方法。
一、创建签名文件
打开AS,选择Build->Generate Signed APK,选择要打包的项目,点击Next。再点击Create new...创建签名文件
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="200" alt="">
填写签名文件响应信息。例如以下所看到的。Password、Key-Alias、Key-Password这三个值须要记住,然后点击OK,完毕创建。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="300" alt="">
完毕之后,在相应路径生成一个jks签名文件。假设选择手动再进行打包,就能够选择该签名文件,然后相应填入password与别名,进行签名,也能够。
二、配置Gradle自己主动打包
拷贝签名文件到主project根文件夹,打开主project的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:password(刚才填的第一个password)
keyAlias:别名
keyPassword:别名password
然后又一次build一下project,展开右边栏Gradle选项卡,例如以下所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="300" alt="">
assembleRelease,即为正式签名。
双击assembleRelease,则会開始运行命令:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="200" alt="" style="font-family:SimSun">
运行完成能够看到BUILD SUCCESSFUL,说明正式签名打包成功了。展开project的build目录。可发现有app-release.apk,即为正式版本号。
下次直接run起来的时候。就带正式签名了。这可比手动签名省事多啦~~
当然,为了提高安全性,我们还能够把那四个属性作为变量配置在主project的gradle.propreties,然后在build.gradle引用变量就能够了。
例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="200" alt="">
这样也能起到相同的效果。
三、应用程序签名的意义
(1)保障开发人员的合法权益
在我们相应用程序进行打包签名后,即表示此应用程序是签名人或机构所开发的,对此应用程序具有全部权。
(2)预防应用程序替换
应用程序签名能够防止部分人通过使用同样的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改。
APK假设使用一个key签名,公布时还有一个key签名的文件将无法安装或覆盖老的版本号。这样能够防止你已安装的应用被恶意的第三方覆盖或替换掉。
实际上就是一种标识。
(3)保证应用程序版本号的一致性
一般应用程序都会有更新,即版本号的升级。假设应用程序的签名不一致,是无法进行更新替代的。所以应用程序的签名是保证当前应用程序顺利进行更新安装的前提。
(4)能够通过权限(permission)的方式在多个程序间共享数据和代码
Android提供了基于数字证书的权限赋予机制。应用程序能够和其它的程序共享概功能或者数据给那那些与自己拥有同样数字证书的程序。假设某个权限(permission)的protectionLevel是signature,则这个权限就仅仅能授予那些跟该权限所在的包拥有同一个数字证书的程序。
还有一方面。Android系统同意拥有同一个数字签名的程序执行在一个进程中,Android程序会将他们视为同一个程序。所以开发人员能够将自己的程序分模块开发。而用户仅仅须要在须要的时候下载适当的模块。
Android Studio 使用正式签名进行调试的更多相关文章
- 如何用Android studio生成正式签名的APK文件
必须签名之后才可以发布到app商店中. 平时的调试的app都有默认的签名. 下面是生成带签名的APK的步骤: 1. Build 选择 Generate Signed APK 2. 弹出框,第一次选择C ...
- Mac系统下查看Android studio默认debug签名与正式签名的SHA1值
https://blog.csdn.net/weixin_32364917/article/details/80095063 获取默认debug签名SHA1值方法,也可以直接打开系统的终端 输入: k ...
- Android Studio入门(安装-->开发调试)
写在前面的话:本文来源:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–&g ...
- [Android Studio 权威教程]断点调试和高级调试
好了开始写一个简单的调试程序,我们先来一个for循环 ? 1 2 3 4 5 6 7 8 <code class="language-java hljs ">for ( ...
- Android Studio用release模式进行调试
有时候调试SDK必须要用release版本,但是每次打包混淆太麻烦,希望能在IDE中直接跑出release版本的应用,简单来说就是在debug模式下产生release版本的app,这时候该怎么做呢?当 ...
- Android studio在真机上进行调试
1.在Android Studio中,把app的默认启动目标改为USB device,点击[app]→[app configuration],在[Target Device]选择[USB device ...
- android studio gradle自动签名构建实现
我为自己代言: 一.在android studio中生成签名文件. 1.在android studio 选中项目,在菜单栏中选择Build. 2.点击Generate Signed APK选项卡. 3 ...
- Android Studio如何用真机调试
1,在真机中设置USB调试模式打开,具体:“设置”->“应用程序”->“开发”->“USB调试”. 2,安装安卓的USB驱动,如果按照不好,那么去下载一个豌豆荚,它会帮你正确安装你的 ...
- APK在Android Studio下如何签名
apk签名的意义 Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的! Andro ...
随机推荐
- C# 方法冒号this的用法
public Class1(string host, int port, string password = null):this() { this.Host=host; this.Port=port ...
- [Kubernetes]Pod字段自动填充
PodPreset(Pod预设置)在Kubernetes v1.11以后出现,开发人员只需要提交一个基本的Pod YAML,Kubernetes就可以自动给对应的Pod对象加上运维人员设定好的其他必要 ...
- java解决前后台跨域问题
这篇文章主要介绍了使用Cors实现JavaWeb跨域请求问题的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 之前用jsonp 解决跨域问题,现在用CORS实现跨域请求解决java 跨域问题: ...
- 【边双连通】poj 3352 Road Construction
http://poj.org/problem?id=3352 [题意] 给定一个连通的无向图,求最少加多少条边使得这个图变成边双连通图 [AC] //#include<bits/stdc++.h ...
- Java中NIO、BIO、AIO相关概念及应用场景
1.同步阻塞IO(JAVA BIO):同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通 ...
- spring和mybatis整合配置文件
查看所有springmvc spring mybatis配置文件见下链接: https://my.oschina.net/sherwayne/blog/262616 <?xml versio ...
- Autorelease对象什么时候释放?
Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease ...
- uva 1426 离散平方根
1426 - Discrete Square Roots Time limit: 3.000 seconds A square root of a number x <tex2html_verb ...
- chef cookbook 实战
在Workstation中创建cookbook,并且上传到Chef server,以及其他与Chef相关的工作. 安装chef client命令 knife bootstrap 10.6.1.207 ...
- net8:文本文件的创建及其读写
原文发布时间为:2008-08-06 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...