android studio 打包自動生成版本號與日期,apk輸入路徑詳解
一. 打開項目選擇如圖示1 (build.gradle 項目位置)

二. 1. build.gradle 文件添加內(nèi)容如下。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 文件添加內(nèi)容如下。 gradle是【com.android.tools.build:gradle:3.0.0及其以上版本】
android{
defaultConfig {...}
//release版本輸出包名自動追加版本號和版本名稱
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包名稱
outputFileName = "app_v" + defaultConfig.versionName + "_" + createTime + "_" + buildType.name + ".apk"
////指定release輸出到指定文件夾
variant.getPackageApplication().outputDirectory = new File(config.appReleaseDir + "/${createTime}")
}
}
}
}
三. 打包查看結果:圖示3(直接點擊assembleRelease即可)

補充知識:Android編譯gradle 動態(tài)修改版本號
在構建代碼的時候不想每次都修改版本號,需能夠增加一個功能在特定的條件下動態(tài)的修改版本號
在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)
}
//這句是核心,可以調(diào)整版本號和版本明,修改了這個會影響到BuildConfig.class里面的屬性
variant.mergedFlavor.versionCode = versionJsonObject.versionCode
variant.mergedFlavor.versionName = versionJsonObject.versionName
//如果沒有加下面這句,當應用安裝后會出現(xiàn)應用信息沒有版本號的問題,這個必須有
variant.mergedFlavor.manifestPlaceholders.put("versioncode", versionJsonObject.versionCode)
variant.mergedFlavor.manifestPlaceholders.put("versionname", versionJsonObject.versionName)
}
//為了記住最新的版本號,是需要進行文件的回寫的,什么時候回寫會好一點
//個人認為只有當打包apk的動作執(zhí)行成功后 回寫文件記錄的版本號最優(yōu)
afterEvaluate {
project ->
gradle.taskGraph.afterTask {
task, taskState ->
//這里如果assembleceshirelease 就具體的打包的變種項目,各個應用肯定不一樣,需要調(diào)整下
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 打包自動生成版本號與日期,apk輸入路徑詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Android編程之繪制文本(FontMetrics)實現(xiàn)方法
這篇文章主要介紹了Android編程之繪制文本(FontMetrics)實現(xiàn)方法,結合實例形式較為詳細的分析了Android使用FontMetrics對象繪制文本的相關技巧,需要的朋友可以參考下2015-12-12
Android自定義ViewGroup實現(xiàn)標簽流效果
這篇文章主要為大家詳細介紹了Android自定義ViewGroup實現(xiàn)標簽流效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
Android使用BroadcastReceiver監(jiān)聽網(wǎng)絡連接狀態(tài)的改變
這篇文章主要為大家詳細介紹了Android使用BroadcastReceiver監(jiān)聽網(wǎng)絡連接狀態(tài)的改變,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android使用ViewPager實現(xiàn)頂部tabbar切換界面
這篇文章主要為大家詳細介紹了使用ViewPager實現(xiàn)頂部tabbar切換界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

