在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 使用正式签名进行调试的更多相关文章

  1. 如何用Android studio生成正式签名的APK文件

    必须签名之后才可以发布到app商店中. 平时的调试的app都有默认的签名. 下面是生成带签名的APK的步骤: 1. Build 选择 Generate Signed APK 2. 弹出框,第一次选择C ...

  2. Mac系统下查看Android studio默认debug签名与正式签名的SHA1值

    https://blog.csdn.net/weixin_32364917/article/details/80095063 获取默认debug签名SHA1值方法,也可以直接打开系统的终端 输入: k ...

  3. Android Studio入门(安装-->开发调试)

    写在前面的话:本文来源:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–&g ...

  4. [Android Studio 权威教程]断点调试和高级调试

    好了开始写一个简单的调试程序,我们先来一个for循环 ? 1 2 3 4 5 6 7 8 <code class="language-java hljs ">for ( ...

  5. Android Studio用release模式进行调试

    有时候调试SDK必须要用release版本,但是每次打包混淆太麻烦,希望能在IDE中直接跑出release版本的应用,简单来说就是在debug模式下产生release版本的app,这时候该怎么做呢?当 ...

  6. Android studio在真机上进行调试

    1.在Android Studio中,把app的默认启动目标改为USB device,点击[app]→[app configuration],在[Target Device]选择[USB device ...

  7. android studio gradle自动签名构建实现

    我为自己代言: 一.在android studio中生成签名文件. 1.在android studio 选中项目,在菜单栏中选择Build. 2.点击Generate Signed APK选项卡. 3 ...

  8. Android Studio如何用真机调试

    1,在真机中设置USB调试模式打开,具体:“设置”->“应用程序”->“开发”->“USB调试”. 2,安装安卓的USB驱动,如果按照不好,那么去下载一个豌豆荚,它会帮你正确安装你的 ...

  9. APK在Android Studio下如何签名

    apk签名的意义 Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的! Andro ...

随机推荐

  1. [uiautomator篇] 找父亲节点和其他兄弟节点

    https://testerhome.com/topics/1250 Appium [已解决] UiSelector 如何根据节点定位到父节点 / 兄弟节点? liqing380 · 发布于 2014 ...

  2. Codeforces Round #415 (Div. 2) 翻车啦

    A. Straight «A» time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. 03-for循环in遍历

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. 关于JS中字符串赋值的问题

    JS中不能直接  字符串不能 str[i] = 'x'     不能for循环 字符串length 然后赋值 应该 将字符串转换为数组   而且 字符x[i]=* 不是所有浏览器都兼容的 用  spl ...

  5. [SCOI2003]字符串折叠 (区间DP)

    题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS…S(X个S). 如果A = A’, B = ...

  6. 将list分成等数量

    import java.util.ArrayList; import java.util.List; public class CollectionGroupUtil { public static ...

  7. scrapy介绍及源码分析

    一 简介 Scrapy基于事件驱动网络框架 Twisted 编写.因此,Scrapy基于并发性考虑由非阻塞(即异步)的实现. 官方文档 :https://docs.scrapy.org/en/late ...

  8. Tarjan 算法 自学整理

    算法介绍 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大强连通子图,称为强连通分量( ...

  9. K大数查询 BZOJ 3110

    K大数查询 [问题描述] 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位 ...

  10. 自动化测试框架之robot framework的应用分析

    序言:很多人都对自动化测试框架痴迷,我曾经也痴迷过一段时间,以前觉得自己对框架说的头头是道,现在回过头来看以前,说归说,但在如何应用还是欠缺,这一段时间,自己经历了一系列框架的构建和应用的时期,所以, ...