Android编译Release版本

来源:互联网 发布:金山 阿里 腾讯 视频云 编辑:程序博客网 时间:2024/05/16 06:53

1. 签名文件

android开发的最终目的,就是要将Release版本发布给用户使用。编译Release最重要的一步,就是应用签名。android系统要求每个应用都需要有签名,android系统不会安装没有签名的app。

如何生成签名文件的教程网上较多,这里就不重复。

2. Gradle配置签名文件

android studio编译签名的版本可以通过Build -> Generate Signed APK,但是这种方式每次都要选几次,挺麻烦的。最重要问题是要是在专门的编译机编译Release版本的时候,就只能通过命令行了。

在命令行输入“./gradlew assembleRelease”就能生成Release版本,但是需要在build.gradle里面配置签名文件:

android {    signingConfigs {        releaseSigning {            storeFile file(getRootDir().getPath() + '/release-tools/xxx.keystore')            storePassword 'xxx'            keyAlias 'xxx'            keyPassword 'xxx'        }    }    buildTypes {        release {            signingConfig signingConfigs.releaseSigning        }    }}

但是build.gradle是项目里面的一个文件,需要提交到版本管理(如git、svn)上去的,如果这样写的话,就会暴露签名文件的密码了。

3. 更好的做法

比较好的方式,是将密码、文件的路径写在一个配置文件或者系统属性里面,然后在编译脚本里面去读取。

更好的方式,是使用gradle的apply from,它的含义类似于android布局的include,即将某个文件的内容包含到当前文件里面。这样的话,就可以将上面的配置签名的代码放到文件里面(如cert.gradle),然后只需要在build.gradle里面写:

if (file(getRootDir().getPath() + "/release-tools/cert.gradle").exists()) {    apply from: '../release-tools/cert.gradle'}

这段代码的含义:如果在项目的release-tools找到cert.gradle文件的话,就将该文件的内容包含到编译脚本里面。

这样密码就不会提交到git上面了,也不需要在系统属性里面配置,只需要保存xxx.keystore、cert.gradle,所以除非某人有这两个文件,否则./gradlew assembleRelease就生成没有签名的apk。

0 0
原创粉丝点击