生成正式签名的APK文件
之前一直都是通过Android studio 来将程序安装到手机上,而它背后实际的工作流程是,Android studio 会将程序打包成一个apk文件,然后将这个文件传输到手机上,最后再执行安装操作。Android 系统会将所有的apk文件识别为应用程序的安装包,类似于windows系统上的EXE文件。
使用Android studio生成:
点击Build APK,生成默认使用debug.keystore签名文件的APK。
点击Generate Singned APK... ,第一次需要创建签名文件
Key store path(生产key文件的保存路径 )
Key store password(key 存储密码)
Key alias(key别名)
Key password(key密码)
Validity(years):密钥有效时间
First and Last Name:密钥颁发者姓名
Organizational Unit:密钥颁发组织
City or Locality:城市
Country Code(XX):国家
V1和V2 的区别:
android 7.0中引入了APK Signature Scheme v2,v1呢是jar Signature来自JDK
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。
v1和v2的签名使用:
只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
同时勾选V1和V2则所有机型都没问题
使用Gradle生成
在Android studio中开发的所有的项目都是使用它来构建的。编辑app/build.gradle文件,在Android闭包中添加如下内容:
可以看到,在Android闭包中添加了一个signingConfigs闭包,然后在signingConfigs闭包中又添加了一个config闭包。接着在config闭包中配置keystone文件各种信息,storeFile用于指定keystone文件的位置,storePassword用于指定密码,keyAlias用于指定别名,keyPassword用于指定别名密码。
签名信心配置好以后,接下来只需要在生成正式版APK的时候去应用这个配置就可以了。
现在build.gradle文件已经配置完成,接下来就是生成APK 文件。Android studio 中内置了很多的 Gradle Tasks,其中就包括了生成APK文件的Task。其中assembleDebug用于生成测试版的APK文件,assembleRelease 用于生成正式版的APK文件,assemble用于同时生成测试版和正式版的APK文件。在生成APK之前,先要双击clean这个Task来清理一下当前项目,然后双击 assembleRelease。
生成多渠道APK文件
添加一个productFlavors闭包,然后在该闭包中添加所有的渠道配置就可以了。注意Gradle的配置规定不能以数字开头,渠道名的闭包中可以覆写defaultConfig中的任何一个属性,比如说这里将applicationId属性进行了覆写,那么最终生成的各渠道APK文件的包名也将各不相同。