android+apk+修改+签名文件位置,Jenkins打包android应用时自动签名apk详解
前言
如果你是使用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详解相关推荐
- android apk 修改 签名文件位置,更改APK中图标文件,签名后重新安装
昨天在使用一款录屏软件APK时,发现有默认的水印,想把水印去掉,或者换成自己的水印.啰嗦几句,免得有人走了我的误区,可以跳过直接进步骤.试了几种办法,包括解压APK包,找资源文件res,没有发现水印的 ...
- android 生成apk名字自动已,Jenkins打包android应用时自动签名apk详解
前言 如果你是使用android studio编译项目的化,在编译apk只会会自动给apk签名. 但默认配置下jenkins下编译出的apk是unsign的.需要一些额外的设置才能自动sign. 这个 ...
- android 固定底部导航,如何设置android底部导航栏位置固定在android
请帮我设置底部导航栏位置固定在底部, ,因为我在输入editText字段时遇到问题,底部导航栏向上移动并覆盖其他领域如何设置android底部导航栏位置固定在android 代码: xmlns:and ...
- Android学习笔记——Android 签名机制详解
Android 签名机制详解 近期由于工作需要在学习 Android 的签名机制,因为没有现成资料,只能通过开发者文档和阅读博客的方式对 Android 签名机制进行大致了解.过程中查阅到的资料相对零 ...
- 【Android签名机制详解】二:Android V1、V2、V3、V4签名方案
前言 书接上回[Android签名机制详解]一:密码学入门,在了解了消息摘要.非对称加密.数字签名.数字证书的基本概念后,我们趁热打铁.直奔主题,讲解签名在Android中的实际应用. 基础知识 An ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
Android基础入门教程--8.3.5 Paint API之-- Xfermode与PorterDuff详解(二) 标签(空格分隔): Android基础入门教程 本节引言: 上一节,我们学习了Xf ...
- android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解
相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...
- android脚本实现自动捉妖,一起来捉妖自动行走辅助怎么用 自动行走辅助详解[多图]...
一起来捉妖中行走是非常重要的,很多地方都需要玩家们多行走才能玩,接下来安族小编带大家来看一下自动行走辅助详解. 一起来捉妖自动行走辅助工具 1.下载一起来捉妖辅助"飞机助手"APP ...
最新文章
- TCL中Ports/Pins/Nets/Cells/Clocks之间的交互关系?
- Spring Cloud【Finchley】实战-03订单微服务与商品微服务之间的调用
- 与大家分享一个我最近开始用的不错的JavaScript IDE
- 具有可执行Tomcat的独立Web应用程序
- luogu P3295 [SCOI2016]萌萌哒
- 龙贝格数值分析作业c语言,数值分析龙贝格实验报告.doc
- 06:校门外的树【一维数组】
- 打造个人品牌的重要性被高估了
- Lucene查询结果高亮
- 计算机图形学完整笔记(七):曲线曲面 - 1
- 【C语言】16-预处理指令2-条件编译
- 【题目精刷】2022诺瓦-数字IC设计
- 【leetcode-字符串】:重复的子字符串(是否由它的一个子串重复多次构成)
- 电脑感叹号,电脑网络出现感叹号怎么解决?Win7系统网络出现感叹号的解决方法...
- The 12th tip of DB Query Analyzer, powerful in text file process
- 白盒测试——循环测试
- Unit Test and Integration Test
- #19ACM第一次招新补题赛de题解呐#
- 小学作文计算机能帮助我们什么,小学作文电脑对我欢喜对我忧.docx
- 了解JavaScript中的Promise
热门文章
- google chrome 谷歌浏览器 快捷键说明
- chrome浏览器 控制台创建 js脚本 并执行
- GetLocaleInfo和本地化
- windows内存管理和API函数
- Linux C编程--进程介绍3--进程终止和等待
- mysql修改字段类型为smallint_mysql更新 unsigned 的 smallint 类型字段出现65535
- php过滤两个坐标,php判断两个坐标的方位角
- The target you are trying to run requires an OpenSSL implementation.
- 程序员多数性功能不行_从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议...
- nc361t支持的服务器,Windows Server 2008 R2通过IP安全策略阻止某个IP