序言

最近正好在项目里用到了 Gradle 打包的配置,顺便总结一下。 一般的 apk 打包类型分为 debug 和 release:debug 开启日志,不进行混淆,用于测试;release 关闭日志,开启混淆,用于正式发布。在 Android Studio 里面,生成的 debug 包使用了 AS 默认的签名,而 release 包没有签名。如果我们需要定制,比如生成 debug 和 release 包后,自动进行签名,就需要在 gradle 配置文件里面加上 apk 签名的配置。

android {......// 配置 release 的签名信息signingConfigs {release {storeFilestorePasswordkeyAliaskeyPassword}}// 读取签名配置getSigningProperties()buildTypes {// debug 和 release 使用同样的签名debug {signingConfig signingConfigs.release}release {minifyEnabled trueshrinkResources truezipAlignEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.release// 修改生成的 apk 文件名,输出 apk 名称:MyApp_v1.0.0_2017-11-10_debug.apkapplicationVariants.all { variant ->def suffixif (variant.buildType.name == 'release') {suffix = 'release'} else {suffix = 'debug'}variant.outputs.each { output ->def outputFile = output.outputFileif (outputFile != null && outputFile.name.endsWith('.apk')) {def fileName = "MyApp_v${defaultConfig.versionName}_${releaseTime()}_${suffix}.apk"output.outputFile = new File(outputFile.parent, fileName)}}}}}......
}// 读取签名配置
def getSigningProperties() {def propFile = file('../signing.properties')if (propFile.exists() && propFile.canRead()) {def props = new Properties()props.load(new FileInputStream(propFile))if (props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {android.signingConfigs.release.storeFile = file('../' + props['STORE_FILE'])android.signingConfigs.release.storePassword = props['STORE_PASSWORD']android.signingConfigs.release.keyAlias = props['KEY_ALIAS']android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']} else {println 'signing.properties are found but some entries are missed!'android.buildTypes.release.signingConfig = null}} else {println 'signing.properties are not found!'android.buildTypes.release.signingConfig = null}
}// 定义打包时间
static def releaseTime() {return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
复制代码

其中,签名配置文件(signing.properties)和签名文件(.jks)存放在项目工程的根目录,它们不需要加入版本控制。这是 signing.properties,可以根据需要自己修改。

STORE_FILE=RichiePersonal.jks
STORE_PASSWORD=ExamplePassword
KEY_ALIAS=ExampleKeyAlias
KEY_PASSWORD=ExampleKeyPassword
复制代码

最后,我们通过 Gradle 命令就可以完成打包工作,生成的 apk 文件名像是这样:MyApp_v1.0.0_2017-11-10_debug.apk。 命令格式:gradlew project:task

gradlew app:assembleDebug

或者

gradlew app:assembleRelease

Gradle 构建的功能还是蛮强大的,从签名的配置就能看出,此外还有自定义构建类型、多工程全局配置、多渠道打包等待,这里就不多介绍了,感兴趣的朋友请自行了解。

转载于:https://juejin.im/post/5c938f726fb9a071090d619c

Android 使用 Gradle 打包 - 签名配置相关推荐

  1. Android中清单文件引入配置参数,Android 使用gradle打包的各种配置

    原标题:Android 使用gradle打包的各种配置 在AS中利用gradle打包,可以高效并且自由地配置各种参数,发布不同的版本.关于配置gradle文件的一些做法,总结为如下. 一.替换Andr ...

  2. android studio编辑环境变量,Android studio gradle环境变量配置教程

    本文实例为大家分享了Android studio gradle环境变量配置的教程,供大家参考,具体内容如下 我的gradle 下载自动解压到了这个目录  C:\Users\jacli\.gradle\ ...

  3. android多渠道打包签名配置,Gradle For Android(二) 多渠道打包与签名配置

    <Gradle For Android(二) 多渠道打包与签名配置> 转载请注明来自 傻小孩b(gold.xitu.io/user/57e089-喜欢的能够关注我,不按期总结文章!您的支持 ...

  4. Android Studio Gradle打包实践之多渠道+版本号管理

    上次介绍了 Android Studio的安装.配置和基本使用 .这次讲一下Android Studio用到的打包工具Gradle. Gradle 是一种构建项目的框架,兼容Maven.Ant,为Ja ...

  5. android二次打包教程,Android应用程序打包签名、加固、二次打包(图形/命令行)...

    前言 Android应用程序在编程开发完成后,需要进行签名打包成相应的APK文件,这就是我们平常网上下载安装的Android应用程序安装包. APK的全称是Android Package,即Andro ...

  6. Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)

    http://www.cnblogs.com/Freedoms/p/5171201.html 一.前言 目前正在准备从eclipse开发环境向AndroidStudio迁移,提前过去探探路,不出所料, ...

  7. [原]Android打包之Gradle打包

    最近尝试了一下Android的Gradle打包,发现确实比Ant打包会方便很多,特此记录下来. 注:android的gradle现在插件的版本已经是0.14.3了,对于一些老的方法和api,有一些已经 ...

  8. 【Flutter】Flutter 拍照示例 ( Android 应用兼容 Android X | Gradle 版本号 | Gradle 插件版本号 | Android X 支持 | SDK 版本 )

    文章目录 一.Gradle 及 Gradle 插件版本 二.支持 AndroidX 配置 三.设置 Android 编译目标版本 四.相关依赖库修改 Flutter 插件 " image_p ...

  9. 【SDK接入篇】【1】Unity的internal 与 gradle打包

    一.简单说说internal 与 gradle打包的区别 **internal: unity内置,仅需Android SDK支持,不能导出工程** (适用于仅使用Unity开发的项目) **Gradl ...

最新文章

  1. 在markdown中设置字体颜色以及背景颜色
  2. docker基础命令
  3. Git之深入解析如何运行自己的Git仓库托管服务器
  4. Java的数据类型及其封装器类
  5. 高性能mysql看不懂_高性能mysql笔记1
  6. 图片列表页的显示方法
  7. 马化腾入选《财富》领袖50强;微博出海布局AI;Android手机爆发病毒 | 一周业界事...
  8. 使用微信支付购买《微信公众平台最佳实践》
  9. java springmvc是什么意思_springmvc的简单理解与使用
  10. Gephi教程——基本操作
  11. 练习一: 提示:emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号) dept部门
  12. netty(7)--UDP实战
  13. Base64编码简介
  14. ①变量、常量、数据类型解释 ②标识符命原则 ③sizeof使用原则 ④float型科学计数法 ⑤字符转换到ASCII表 ⑥\t 的使用意义【黑马程序员视频】
  15. indesign选中不了图片删除_图片神器XnView教程、方法和技巧汇总
  16. Blender:如何翻转UV
  17. 超级详细:公网环境下登录 Docker 仓库: Docker Hub 或 国内阿里镜像仓库!超级解惑!(推送镜像到docker hub 或 国内阿里云镜像仓库)
  18. 机器学习:案例探究课程笔记
  19. java基础--while循环实现A4纸折叠次数到珠穆朗玛峰高度
  20. 利用爬虫下载批量图片

热门文章

  1. python 程序块 挂掉的服务_写一个python的服务监控程序
  2. win10风格美化以及新建系统后优化
  3. springmvc04跳转
  4. digester java_commons-digester 升级到 commons-digester3 的坑
  5. tensorflow 数据归一化_TensorFlow——批量归一化操作
  6. python文件读写到list_Python文件读写
  7. object转换成Integer
  8. 查询 mysql所有表名
  9. linux c 数组拷贝,C++对数组进行复制 - osc_8iux0cyz的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Oracle 外部表加载监听日志,使用外部表访问监听日志