91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android studio如何打包自動生成版本號與日期

發布時間:2021-05-08 11:46:30 來源:億速云 閱讀:618 作者:小新 欄目:移動開發

這篇文章給大家分享的是有關android studio如何打包自動生成版本號與日期的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

一. 打開項目選擇如圖示1 (build.gradle 項目位置)

android studio如何打包自動生成版本號與日期

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

android{
 
  defaultConfig {...}
 
  自動追加版本號和版本名稱
  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 文件添加內容如下。 gradle是【com.android.tools.build:gradle:3.0.0及其以上版本】

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

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

android studio如何打包自動生成版本號與日期

補充知識:Android編譯gradle 動態修改版本號

在構建代碼的時候不想每次都修改版本號,需能夠增加一個功能在特定的條件下動態的修改版本號

在manifest里面加入占位符號

<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')//這個文件最好放一個所有項目人員都能夠訪問的地方
  def versionJsonObject = new Gson().fromJson(versionJsonFile.text, Version.class)
  android.applicationVariants.all {
    variant ->
      println("variants name : " + variant.name)
  //只有滿足特定條件的情況下才會版本自增一,這個可以看看各個項目的特定配置
      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)
      }
  //這句是核心,可以調整版本號和版本明,修改了這個會影響到BuildConfig.class里面的屬性
      variant.mergedFlavor.versionCode = versionJsonObject.versionCode
      variant.mergedFlavor.versionName = versionJsonObject.versionName
  //如果沒有加下面這句,當應用安裝后會出現應用信息沒有版本號的問題,這個必須有
      variant.mergedFlavor.manifestPlaceholders.put("versioncode", versionJsonObject.versionCode)
      variant.mergedFlavor.manifestPlaceholders.put("versionname", versionJsonObject.versionName)
  }
 
 //為了記住最新的版本號,是需要進行文件的回寫的,什么時候回寫會好一點
 //個人認為只有當打包apk的動作執行成功后 回寫文件記錄的版本號最優
  afterEvaluate {
    project ->
      gradle.taskGraph.afterTask {
        task, taskState ->
    //這里如果assembleceshirelease 就具體的打包的變種項目,各個應用肯定不一樣,需要調整下
          if (task.name.toLowerCase().contains("assembleceshirelease") && taskState.getFailure() == null) {
            println("try assemble ceshi release" )
   //回寫文件操作
            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如何打包自動生成版本號與日期”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大庆市| 蕉岭县| 云梦县| 历史| 高青县| 原阳县| 旬阳县| 道孚县| 澄江县| 象州县| 叙永县| 双峰县| 钦州市| 衡水市| 武鸣县| 上杭县| 开远市| 丘北县| 沭阳县| 蓬安县| 涞源县| 本溪市| 赣州市| 涪陵区| 辽阳县| 虎林市| 渝中区| 民和| 玉溪市| 通辽市| 石首市| 米易县| 景谷| 磴口县| 黎城县| 乐平市| 修武县| 大连市| 大港区| 交城县| 甘德县|