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

android studio 打包自動(dòng)生成版本號(hào)與日期,apk輸入路徑詳解

 更新時(shí)間:2020年03月24日 10:25:01   作者:Swer  
這篇文章主要介紹了android studio 打包自動(dòng)生成版本號(hào)與日期,apk輸入路徑詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

一. 打開(kāi)項(xiàng)目選擇如圖示1 (build.gradle 項(xiàng)目位置)

二. 1. build.gradle 文件添加內(nèi)容如下。gradle是【com.android.tools.build:gradle:3.0.0 以下版本

android{
 
  defaultConfig {...}
 
  自動(dòng)追加版本號(hào)和版本名稱(chēng)
  android.applicationVariants.all {
    variant->variant.outputs.each {
      output-> output.outputFile = new File(output.outputFile.parent,"app_device_v"+defaultConfig.versionName+"_"+new Date().format("yyyy-MM-dd")+"_"+buildType.name+".apk")
    }
  }
}

output.outputFile.parent 可以指定輸出到指定文件夾

2. build.gradle 文件添加內(nèi)容如下。 gradle是【com.android.tools.build:gradle:3.0.0及其以上版本

android{
 
  defaultConfig {...}
 
  //release版本輸出包名自動(dòng)追加版本號(hào)和版本名稱(chēng)
  applicationVariants.all {
    variant ->
      variant.outputs.all {
        //只處理生產(chǎn)版本
        if (buildType.name == 'release') {
          def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
           // app包名稱(chēng)
          outputFileName = "app_v" + defaultConfig.versionName + "_" + createTime + "_" + buildType.name + ".apk"
          ////指定release輸出到指定文件夾
          variant.getPackageApplication().outputDirectory = new File(config.appReleaseDir + "/${createTime}")
        }
      }
  }
}  

三. 打包查看結(jié)果:圖示3(直接點(diǎn)擊assembleRelease即可)

補(bǔ)充知識(shí):Android編譯gradle 動(dòng)態(tài)修改版本號(hào)

在構(gòu)建代碼的時(shí)候不想每次都修改版本號(hào),需能夠增加一個(gè)功能在特定的條件下動(dòng)態(tài)的修改版本號(hào)

在manifest里面加入占位符號(hào)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="${versioncode}"
    android:versionName="${versionname}">

修改build.gradle

import com.google.gson.Gson

class Version {
  int versionCode
  String versionName
}


def versionJsonFile = file('./version.json')//這個(gè)文件最好放一個(gè)所有項(xiàng)目人員都能夠訪問(wèn)的地方
  def versionJsonObject = new Gson().fromJson(versionJsonFile.text, Version.class)
  android.applicationVariants.all {
    variant ->
      println("variants name : " + variant.name)
  //只有滿(mǎn)足特定條件的情況下才會(huì)版本自增一,這個(gè)可以看看各個(gè)項(xiàng)目的特定配置
      if (variant.name.toLowerCase().contains("ceshirelease") ) {
        println("variants name : versionCode " + versionJsonObject.versionCode + "versionname: " + versionJsonObject.versionName)
        versionJsonObject.versionCode = versionJsonObject.versionCode + 1
        int lastIndexPoint = versionJsonObject.versionName.lastIndexOf(".")
        String newStr = versionJsonObject.versionName.substring(0, lastIndexPoint)
        println("newStr" + newStr)
        versionJsonObject.versionName = newStr + "." + versionJsonObject.versionCode
        println("versonJsonStr.versionName " +  versionJsonObject.versionName)
      }
  //這句是核心,可以調(diào)整版本號(hào)和版本明,修改了這個(gè)會(huì)影響到BuildConfig.class里面的屬性
      variant.mergedFlavor.versionCode = versionJsonObject.versionCode
      variant.mergedFlavor.versionName = versionJsonObject.versionName
  //如果沒(méi)有加下面這句,當(dāng)應(yīng)用安裝后會(huì)出現(xiàn)應(yīng)用信息沒(méi)有版本號(hào)的問(wèn)題,這個(gè)必須有
      variant.mergedFlavor.manifestPlaceholders.put("versioncode", versionJsonObject.versionCode)
      variant.mergedFlavor.manifestPlaceholders.put("versionname", versionJsonObject.versionName)
  }
 
 //為了記住最新的版本號(hào),是需要進(jìn)行文件的回寫(xiě)的,什么時(shí)候回寫(xiě)會(huì)好一點(diǎn)
 //個(gè)人認(rèn)為只有當(dāng)打包apk的動(dòng)作執(zhí)行成功后 回寫(xiě)文件記錄的版本號(hào)最優(yōu)
  afterEvaluate {
    project ->
      gradle.taskGraph.afterTask {
        task, taskState ->
    //這里如果assembleceshirelease 就具體的打包的變種項(xiàng)目,各個(gè)應(yīng)用肯定不一樣,需要調(diào)整下
          if (task.name.toLowerCase().contains("assembleceshirelease") && taskState.getFailure() == null) {
            println("try assemble ceshi release" )
   //回寫(xiě)文件操作
            versionJsonFile.withPrintWriter { out ->
                out.println(new Gson().toJson(versionJsonObject))
            }
          }
      }
  }

給apk重新命名也是同樣的道理

      variant.getOutputs().all {
        File file = it.outputFile;
        println(" file property file.canRead() " + file.canRead() + " file.canWrite " + file.canWrite())
        String pathString = file.getPath();
        println(" path String : " + pathString + " File.pathSeparator: " + File.separator)
   //指定最終輸出的文件的目錄和名字
        pathString = file.getParent() + File.separator + "test.apk";
        println(" path pathString : " + pathString)
        file.renameTo(pathString)
      }

以上這篇android studio 打包自動(dòng)生成版本號(hào)與日期,apk輸入路徑詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論