您的位置:首页 > 移动开发 > Android开发

Android编译Release版本

2016-09-20 22:21 351 查看

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android gradle