前言

如果你是使用android studio编译项目的化,在编译apk只会会自动给apk签名。

但默认配置下jenkins下编译出的apk是unsign的。需要一些额外的设置才能自动sign。

这个功能需要我们修改下build.gradle配置文件,让gradle在编译之后执行签名。

当然你也可以在这里做一些其他的修改,比如修改编译出的apk的名字,让他加个当前时间的时间戳,编译类型的后缀什么的,方便识别。

1.生成的apk名加上当前时间 + 修改apk的发布路径

在build.gradle配置文件下的android配置段下的buildTypes下找到你的编译配置项一般就是release

在release段下面加上如下代码

applicationVariants.all { variant ->

if (variant.buildType.name.equals('release')) { //如果是release版本

variant.outputs.each { output -> def outputFile = output.outputFile

if (outputFile != null && outputFile.name.endsWith('.apk')) { //查找所有的apk

def fileName = "${releaseTime()}_XXXXPorject_${defaultConfig.versionName}.apk" //重新定义apk的名称

output.outputFile = new File(outputFile.parent, fileName) //outputFile.parent参数可以改成你你想要的发布路径

}

}

}

}

然后在build.gradle配置文件的末尾加上一个方法用来获取当前时间

def releaseTime() {

// return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC")) //年月日

return new Date().format("yyyyMMdd HH-mm-ss", TimeZone.getTimeZone("GMT+8:00")) //年月日时分秒

}

2.实现自动化签名 别忘了jks文件也要放项目里

build.gradle的android段添加如下配置段 定义签名key

signingConfigs {//签名的配置

release {

storeFile file("签名.jks")

storePassword '密码'

keyAlias '别名'

keyPassword '密码'

}

}

在android配置段下的buildTypes段的release段下添加一行 表示调用上面的签名配置

注意修改apk的名字后在android studio是无法开启调试模式,提示找不到apk

signingConfig signingConfigs.release

效果图

第一个是debug版本

第二个是没签名的release版本

第三个是签名后还改了名字的release版本

如果想编译某个版本的话 需要修改下执行gradle的命令行参数

参考例子

apply plugin: 'com.android.application'

android {

compileSdkVersion 25

buildToolsVersion '24.0.3'

defaultConfig {

applicationId "com.coderstory.Purify"

minSdkVersion 19

targetSdkVersion 25

versionCode 90

versionName "1.5.0"

resConfigs "cn"

}

repositories {

mavenCentral()

}

signingConfigs {//签名的配置

release {

storeFile file("mykey.jks")

storePassword 'a1234'

keyAlias 'coolapk'

keyPassword 'b1234'

}

}

buildTypes {

release {

shrinkResources true

minifyEnabled true

signingConfig signingConfigs.release

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

applicationVariants.all { variant ->

if (variant.buildType.name.equals('release')) { //如果是release版本

variant.outputs.each { output -> def outputFile = output.outputFile

if (outputFile != null && outputFile.name.endsWith('.apk')) { //查找所有的apk

def fileName = "MIUI Purify_${releaseTime()}_${defaultConfig.versionName}.apk" //重新定义apk的名称

output.outputFile = new File(outputFile.parent, fileName) //outputFile.parent参数可以改成你你想要的发布路径

}

}

}

}

}

}

productFlavors {

}

lintOptions {

abortOnError false

}

}

dependencies {

provided fileTree(include: ['*.jar'], dir: 'libs')

compile project(':library')

compile project(':pull')

compile 'com.android.support:support-v4:25.0.1'

compile 'com.android.support:appcompat-v7:25.0.1'

compile 'com.android.support:design:25.0.1'

testCompile 'junit:junit:4.12'

provided 'de.robv.android.xposed:api:82'

}

def releaseTime() {

// return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC")) //年月日

return new Date().format("yyyyMMdd HH-mm-ss", TimeZone.getTimeZone("GMT+8:00")) //年月日时分秒

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

android+apk+修改+签名文件位置,Jenkins打包android应用时自动签名apk详解相关推荐

  1. android apk 修改 签名文件位置,更改APK中图标文件,签名后重新安装

    昨天在使用一款录屏软件APK时,发现有默认的水印,想把水印去掉,或者换成自己的水印.啰嗦几句,免得有人走了我的误区,可以跳过直接进步骤.试了几种办法,包括解压APK包,找资源文件res,没有发现水印的 ...

  2. android 生成apk名字自动已,Jenkins打包android应用时自动签名apk详解

    前言 如果你是使用android studio编译项目的化,在编译apk只会会自动给apk签名. 但默认配置下jenkins下编译出的apk是unsign的.需要一些额外的设置才能自动sign. 这个 ...

  3. android 固定底部导航,如何设置android底部导航栏位置固定在android

    请帮我设置底部导航栏位置固定在底部, ,因为我在输入editText字段时遇到问题,底部导航栏向上移动并覆盖其他领域如何设置android底部导航栏位置固定在android 代码: xmlns:and ...

  4. Android学习笔记——Android 签名机制详解

    Android 签名机制详解 近期由于工作需要在学习 Android 的签名机制,因为没有现成资料,只能通过开发者文档和阅读博客的方式对 Android 签名机制进行大致了解.过程中查阅到的资料相对零 ...

  5. 【Android签名机制详解】二:Android V1、V2、V3、V4签名方案

    前言 书接上回[Android签名机制详解]一:密码学入门,在了解了消息摘要.非对称加密.数字签名.数字证书的基本概念后,我们趁热打铁.直奔主题,讲解签名在Android中的实际应用. 基础知识 An ...

  6. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  7. Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)

    Android基础入门教程--8.3.5 Paint API之-- Xfermode与PorterDuff详解(二) 标签(空格分隔): Android基础入门教程 本节引言: 上一节,我们学习了Xf ...

  8. android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解

    相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...

  9. android脚本实现自动捉妖,一起来捉妖自动行走辅助怎么用 自动行走辅助详解[多图]...

    一起来捉妖中行走是非常重要的,很多地方都需要玩家们多行走才能玩,接下来安族小编带大家来看一下自动行走辅助详解. 一起来捉妖自动行走辅助工具 1.下载一起来捉妖辅助"飞机助手"APP ...

最新文章

  1. TCL中Ports/Pins/Nets/Cells/Clocks之间的交互关系?
  2. Spring Cloud【Finchley】实战-03订单微服务与商品微服务之间的调用
  3. 与大家分享一个我最近开始用的不错的JavaScript IDE
  4. 具有可执行Tomcat的独立Web应用程序
  5. luogu P3295 [SCOI2016]萌萌哒
  6. 龙贝格数值分析作业c语言,数值分析龙贝格实验报告.doc
  7. 06:校门外的树【一维数组】
  8. 打造个人品牌的重要性被高估了
  9. Lucene查询结果高亮
  10. 计算机图形学完整笔记(七):曲线曲面 - 1
  11. 【C语言】16-预处理指令2-条件编译
  12. 【题目精刷】2022诺瓦-数字IC设计
  13. 【leetcode-字符串】:重复的子字符串(是否由它的一个子串重复多次构成)
  14. 电脑感叹号,电脑网络出现感叹号怎么解决?Win7系统网络出现感叹号的解决方法...
  15. The 12th tip of DB Query Analyzer, powerful in text file process
  16. 白盒测试——循环测试
  17. Unit Test and Integration Test
  18. #19ACM第一次招新补题赛de题解呐#
  19. 小学作文计算机能帮助我们什么,小学作文电脑对我欢喜对我忧.docx
  20. 了解JavaScript中的Promise

热门文章

  1. google chrome 谷歌浏览器 快捷键说明
  2. chrome浏览器 控制台创建 js脚本 并执行
  3. GetLocaleInfo和本地化
  4. windows内存管理和API函数
  5. Linux C编程--进程介绍3--进程终止和等待
  6. mysql修改字段类型为smallint_mysql更新 unsigned 的 smallint 类型字段出现65535
  7. php过滤两个坐标,php判断两个坐标的方位角
  8. The target you are trying to run requires an OpenSSL implementation.
  9. 程序员多数性功能不行_从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议...
  10. nc361t支持的服务器,Windows Server 2008 R2通过IP安全策略阻止某个IP