欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jenkins打包android應(yīng)用時(shí)自動(dòng)簽名apk詳解

 更新時(shí)間:2019年07月16日 09:45:16   作者:coderstory  
這篇文章主要介紹了Jenkins打包android應(yīng)用時(shí)自動(dòng)簽名apk詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

如果你是使用android studio編譯項(xiàng)目的化,在編譯apk只會(huì)會(huì)自動(dòng)給apk簽名。

但默認(rèn)配置下jenkins下編譯出的apk是unsign的。需要一些額外的設(shè)置才能自動(dòng)sign。

這個(gè)功能需要我們修改下build.gradle配置文件,讓gradle在編譯之后執(zhí)行簽名。

當(dāng)然你也可以在這里做一些其他的修改,比如修改編譯出的apk的名字,讓他加個(gè)當(dāng)前時(shí)間的時(shí)間戳,編譯類型的后綴什么的,方便識別。

1.生成的apk名加上當(dāng)前時(shí)間 + 修改apk的發(fā)布路徑

在build.gradle配置文件下的android配置段下的buildTypes下找到你的編譯配置項(xiàng)一般就是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配置文件的末尾加上一個(gè)方法用來獲取當(dāng)前時(shí)間

def releaseTime() {
  // return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC")) //年月日
  return new Date().format("yyyyMMdd HH-mm-ss", TimeZone.getTimeZone("GMT+8:00")) //年月日時(shí)分秒
}

2.實(shí)現(xiàn)自動(dòng)化簽名 別忘了jks文件也要放項(xiàng)目里

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

效果圖

第一個(gè)是debug版本

第二個(gè)是沒簽名的release版本

第三個(gè)是簽名后還改了名字的release版本

如果想編譯某個(gè)版本的話 需要修改下執(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")) //年月日時(shí)分秒
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論