Đây là một bản hiện đại hóa câu trả lời trước đây của tôi có thể được nhìn thấy bên dưới. Cái này đang chạy với Gradle 4.4 và Android Studio 3.1.1 .
Tập lệnh này làm gì:
- Tạo tệp version.properties nếu không có (bỏ phiếu cho câu trả lời của Paul Cantrell bên dưới, đó là nơi tôi lấy ý tưởng nếu bạn thích câu trả lời này)
- Đối với mỗi bản dựng, bản phát hành gỡ lỗi hoặc bất kỳ lúc nào bạn nhấn nút chạy trong Android Studio, số VERSION_BUILD sẽ tăng lên.
- Mỗi khi bạn lắp ráp một phiên bản Android của bạn Mã phiên bản cho các cửa hàng chơi tăng và bạn số bản vá tăng.
- Phần thưởng: Sau khi xây dựng xong, hãy sao chép apk của bạn để
projectDir/apk
dễ truy cập hơn.
Tập lệnh này sẽ tạo một số phiên bản giống v1.3.4 (123)
và tạo một tệp apk như AppName-v1.3.4.apk .
Major version ⌄ ⌄ Build version
v1.3.4 (123)
Minor version ⌃|⌃ Patch version
Phiên bản chính: Phải được thay đổi thủ công để có những thay đổi lớn hơn.
Phiên bản nhỏ: Phải được thay đổi thủ công để có những thay đổi nhỏ hơn một chút.
Phiên bản vá: Tăng khi chạygradle assembleRelease
Phiên bản xây dựng: Tăng mỗi phiên bản
Số phiên bản: Giống như phiên bản Patch , đây là mã phiên bản mà Cửa hàng Play cần tăng cho mỗi lần tải lên apk mới.
Chỉ cần thay đổi nội dung trong các nhận xét có nhãn 1 - 3 bên dưới và tập lệnh sẽ thực hiện phần còn lại. :)
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
def versionPropsFile = file('version.properties')
def value = 0
Properties versionProps = new Properties()
if (!versionPropsFile.exists()) {
versionProps['VERSION_PATCH'] = "0"
versionProps['VERSION_NUMBER'] = "0"
versionProps['VERSION_BUILD'] = "-1" // I set it to minus one so the first build is 0 which isn't super important.
versionProps.store(versionPropsFile.newWriter(), null)
}
def runTasks = gradle.startParameter.taskNames
if ('assembleRelease' in runTasks) {
value = 1
}
def mVersionName = ""
def mFileName = ""
if (versionPropsFile.canRead()) {
versionProps.load(new FileInputStream(versionPropsFile))
versionProps['VERSION_PATCH'] = (versionProps['VERSION_PATCH'].toInteger() + value).toString()
versionProps['VERSION_NUMBER'] = (versionProps['VERSION_NUMBER'].toInteger() + value).toString()
versionProps['VERSION_BUILD'] = (versionProps['VERSION_BUILD'].toInteger() + 1).toString()
versionProps.store(versionPropsFile.newWriter(), null)
// 1: change major and minor version here
mVersionName = "v1.0.${versionProps['VERSION_PATCH']}"
// 2: change AppName for your app name
mFileName = "AppName-${mVersionName}.apk"
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
applicationId "com.example.appname" // 3: change to your package name
versionCode versionProps['VERSION_NUMBER'].toInteger()
versionName "${mVersionName} Build: ${versionProps['VERSION_BUILD']}"
}
} else {
throw new FileNotFoundException("Could not read version.properties!")
}
if ('assembleRelease' in runTasks) {
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
outputFileName = mFileName
}
}
}
}
task copyApkFiles(type: Copy){
from 'build/outputs/apk/release'
into '../apk'
include mFileName
}
afterEvaluate {
assembleRelease.doLast {
tasks.copyApkFiles.execute()
}
}
signingConfigs {
...
}
buildTypes {
...
}
}
================================================== ==
CÂU TRẢ LỜI BAN ĐẦU:
Tôi muốn tên phiên bản cũng tự động tăng. Vì vậy, đây chỉ là một bổ sung cho câu trả lời của CommonsWare đã hoạt động hoàn hảo đối với tôi. Đây là những gì làm việc cho tôi
defaultConfig {
versionCode code
versionName "1.1." + code
minSdkVersion 14
targetSdkVersion 18
}
BIÊN TẬP:
Vì tôi hơi lười biếng, tôi muốn phiên bản của mình hoạt động tự động nhất có thể. Điều tôi muốn là có một Phiên bản xây dựng tăng theo mỗi bản dựng, trong khi Số phiên bản và Tên phiên bản chỉ tăng khi tôi tạo một bản dựng phát hành.
Đây là những gì tôi đã sử dụng trong năm qua, những điều cơ bản là từ câu trả lời của CommonsWare và câu trả lời trước đây của tôi, cộng với một số điều khác. Điều này dẫn đến phiên bản sau:
Tên phiên bản: 1.0.5 (123) -> Major.Minor.Patch (Build), Major và Minor được thay đổi thủ công.
Trong build.gradle:
...
android {
compileSdkVersion 23
buildToolsVersion '23.0.1'
def versionPropsFile = file('version.properties')
if (versionPropsFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
def value = 0
def runTasks = gradle.startParameter.taskNames
if ('assemble' in runTasks || 'assembleRelease' in runTasks || 'aR' in runTasks) {
value = 1;
}
def versionMajor = 1
def versionMinor = 0
def versionPatch = versionProps['VERSION_PATCH'].toInteger() + value
def versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
def versionNumber = versionProps['VERSION_NUMBER'].toInteger() + value
versionProps['VERSION_PATCH'] = versionPatch.toString()
versionProps['VERSION_BUILD'] = versionBuild.toString()
versionProps['VERSION_NUMBER'] = versionNumber.toString()
versionProps.store(versionPropsFile.newWriter(), null)
defaultConfig {
versionCode versionNumber
versionName "${versionMajor}.${versionMinor}.${versionPatch} (${versionBuild}) Release"
minSdkVersion 14
targetSdkVersion 23
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def fileNaming = "apk/RELEASES"
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
output.outputFile = new File(getProject().getRootDir(), "${fileNaming}-${versionMajor}.${versionMinor}.${versionPatch}-${outputFile.name}")
}
}
}
}
} else {
throw new GradleException("Could not read version.properties!")
}
...
}
...
Bản vá và mã phiên bản được tăng lên nếu bạn lắp ráp dự án của mình thông qua thiết bị đầu cuối với 'assembly' , 'assemblyRelease' hoặc 'aR' để tạo một thư mục mới trong gốc dự án của bạn có tên là apk / RELEASE, do đó bạn không phải xem qua bản dựng / đầu ra / more / more / more để tìm apk của bạn.
Thuộc tính phiên bản của bạn sẽ cần phải trông như thế này:
VERSION_NUMBER=1
VERSION_BUILD=645
VERSION_PATCH=1
Rõ ràng là bắt đầu bằng 0. :)