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。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories