Android Studio项目打包(三)打包说明:release和debug版本的区别、v1和v2的签名使用等等

版权声明:本文为博主原创文章,不得随意转载,转载请注明出处!!! https://blog.csdn.net/YuDBL/article/details/85012978

android中导出签名的,apk的release和debug版本的区别

(1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。

(2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题,相当于软件不具备升级功能!

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。
Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信 息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

(3) debug程序通常比release程序要慢,尤其是处理视频方便release要比debug快很多。在release模式对程序进行调试的时候经常会遇到变量虽然初始化了,但是在查看其值的时候却发现是一个随机的数并不是初始化的值,有时候在对变量进行监视的时候了,会出现找不到变量的情况。
(4) debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc, 而release的赋值近似于随机。在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。
(5) 只有DEBUG版的程序才能设置断点、单步执行、使用 TRACE/ASSERT等调试输出语句。REALEASE不包含任何调试信息,所以体积小、运行速度快。

v1和v2的签名使用

问题描述(v1和v2)

Android 7.0中引入了APK Signature Scheme v2,v1呢是jar Signature来自JDK
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。

方案一

只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式

只勾选V2签名7.0以下会直接安装完显示未安装,

7.0以上则使用了V2的方式验证,同时勾选V1和V2则所有机型都没问题

方案二

在app的build.gradle的android标签下加入如下

signingConfigs {

    debug {

        v1SigningEnabled true

        v2SigningEnabled true

    }

    release {

        v1SigningEnabled true

        v2SigningEnabled true

    }

}

参考链接:

https://www.cnblogs.com/hhks/p/4792334.html

https://zhidao.baidu.com/question/620939843767120332.html

https://blog.csdn.net/qq_36726461/article/details/71520268

https://blog.csdn.net/lvshuchangyin/article/details/62227286

http://www.cnblogs.com/ok-lanyan/archive/2013/04/02/2995462.html

猜你喜欢

转载自blog.csdn.net/YuDBL/article/details/85012978