Jenkins打包android應(yīng)用時自動簽名apk詳解
前言
如果你是使用android studio編譯項目的化,在編譯apk只會會自動給apk簽名。
但默認(rèn)配置下jenkins下編譯出的apk是unsign的。需要一些額外的設(shè)置才能自動sign。
這個功能需要我們修改下build.gradle配置文件,讓gradle在編譯之后執(zhí)行簽名。
當(dāng)然你也可以在這里做一些其他的修改,比如修改編譯出的apk的名字,讓他加個當(dāng)前時間的時間戳,編譯類型的后綴什么的,方便識別。
1.生成的apk名加上當(dāng)前時間 + 修改apk的發(fā)布路徑
在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參數(shù)可以改成你你想要的發(fā)布路徑
}
}
}
}
然后在build.gradle配置文件的末尾加上一個方法用來獲取當(dāng)前時間
def releaseTime() {
// return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC")) //年月日
return new Date().format("yyyyMMdd HH-mm-ss", TimeZone.getTimeZone("GMT+8:00")) //年月日時分秒
}
2.實現(xiàn)自動化簽名 別忘了jks文件也要放項目里
build.gradle的android段添加如下配置段 定義簽名key
signingConfigs {//簽名的配置
release {
storeFile file("簽名.jks")
storePassword '密碼'
keyAlias '別名'
keyPassword '密碼'
}
}
在android配置段下的buildTypes段的release段下添加一行 表示調(diào)用上面的簽名配置
注意修改apk的名字后在android studio是無法開啟調(diào)試模式,提示找不到apk
signingConfig signingConfigs.release
效果圖
第一個是debug版本
第二個是沒簽名的release版本
第三個是簽名后還改了名字的release版本
如果想編譯某個版本的話 需要修改下執(zhí)行g(shù)radle的命令行參數(shù)

參考例子
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參數(shù)可以改成你你想要的發(fā)布路徑
}
}
}
}
}
}
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")) //年月日時分秒
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android使用WebSocket實現(xiàn)多人游戲
WebSocket 是 HTML5 一種新的協(xié)議。實現(xiàn)了瀏覽器與服務(wù)器全雙工通信,下面通過本文給大家分享Android使用WebSocket實現(xiàn)多人游戲,需要的朋友參考下吧2017-11-11
Android中關(guān)于相對布局RelativeLayout的技巧匯總
RelativeLayout是相對布局控件,以控件之間相對位置或相對父容器位置進(jìn)行排列。下面這篇文章主要給大家介紹了關(guān)于Android中相對布局RelativeLayout的一些技巧,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02
Android開發(fā)自學(xué)筆記(六):聲明權(quán)限和Activity
這篇文章主要介紹了Android開發(fā)自學(xué)筆記(六):聲明權(quán)限和Activity,本文是上一篇的補(bǔ)充,需要的朋友可以參考下2015-04-04
Android判斷手機(jī)是否聯(lián)網(wǎng)及自動跳轉(zhuǎn)功能(收藏版)
這篇文章主要介紹了Android判斷手機(jī)是否聯(lián)網(wǎng)及自動跳轉(zhuǎn)功能(收藏版),在一些手機(jī)端連接wifi我們經(jīng)常會遇到這樣的功能,今天小編通過實例截圖給大家介紹下,需要的朋友可以參考下2019-11-11
android跑馬燈出現(xiàn)重復(fù)跳動以及不滾動問題的解決方法
這篇文章主要介紹了android跑馬燈出現(xiàn)重復(fù)跳動以及不滾動問題的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Android 利用反射+try catch實現(xiàn)sdk按需引入依賴庫的方法
這篇文章主要介紹了Android 利用反射+try catch來實現(xiàn)sdk按需引入依賴庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

