Saya sedang membangun aplikasi Android dengan gradle. Sampai saat ini saya menggunakan file Manifest untuk meningkatkan versionCode, tetapi saya ingin membaca versionCode dari file eksternal dan tergantung apakah itu rilis flavor atau debug meningkatkan versionCode. Saya mencoba properti tambahan, tetapi Anda tidak dapat menyimpannya, yang berarti bahwa lain kali saya membuatnya, saya mendapatkan versionCode yang sama. Bantuan apa pun akan sangat dihargai!
project.ext{
devVersionCode = 13
releaseVersionCode = 1
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile project(':Cropper')
compile "com.android.support:appcompat-v7:18.0.+"
compile "com.android.support:support-v4:18.0.+"
compile fileTree(dir: 'libs', include: '*.jar')
}
def getReleaseVersionCode() {
def version = project.releaseVersionCode + 1
project.releaseVersionCode = version
println sprintf("Returning version %d", version)
return version
}
def getDevVersionCode() {
def version = project.devVersionCode + 1
project.devVersionCode = version
println sprintf("Returning version %d", version)
return version
}
def getLastVersioName(versionCode) {
return "0.0." + versionCode
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
buildTypes {
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
proguardFile 'proguard.cfg'
debuggable false
signingConfig null
zipAlign false
}
debug {
versionNameSuffix "-DEBUG"
}
}
productFlavors {
dev {
packageName = 'com.swisscom.docsafe.debug'
versionCode getDevVersionCode()
versionName getLastVersioName(project.devVersionCode)
}
prod {
packageName = 'com.swisscom.docsafe'
versionCode getReleaseVersionCode()
versionName getLastVersioName(project.releaseVersionCode)
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.8'
}
android
gradle
android-gradle-plugin
build.gradle
carvaq.dll
sumber
sumber
Jawaban:
Saya yakin bahwa ada sejumlah solusi yang mungkin; ini satu:
Kode ini mengharapkan
version.properties
file yang sudah ada , yang akan Anda buat dengan tangan sebelum membangun pertamaVERSION_CODE=8
.Kode ini hanya meningkatkan kode versi pada setiap build - Anda perlu memperluas teknik untuk menangani kode versi per ragam Anda.
Anda dapat melihat proyek contoh Pembuatan Versi yang mendemonstrasikan kode ini.
sumber
assembleRelease.finalizedBy incrementVersion
atau yang serupa. Saya akan memposting kode saya setelah saya merapikannya../gradlew incrementVersionCode build
. Tugas yang dipanggil secara berurutan dengan cara ini akan berhenti segera setelah salah satu tugas gagal.versionCode getIncrementingVersionCode()
Ini dia modernisasi jawaban saya sebelumnya yang dapat dilihat di bawah. Yang ini berjalan dengan Gradle 4.4 dan Android Studio 3.1.1 .
Apa yang dilakukan skrip ini:
projectDir/apk
agar lebih mudah diakses.Skrip ini akan membuat nomor versi yang mirip
v1.3.4 (123)
dan membuat file apk seperti AppName-v1.3.4.apk .Versi utama: Harus diubah secara manual untuk perubahan yang lebih besar.
Versi minor: Harus diubah secara manual untuk perubahan yang sedikit lebih kecil.
Versi patch: Meningkat saat dijalankan
gradle assembleRelease
Versi build: Meningkatkan setiap build
Nomor Versi: Sama seperti versi Patch , ini untuk kode versi yang perlu ditingkatkan oleh Play Store untuk setiap unggahan apk baru.
Ubah saja konten di komentar berlabel 1 - 3 di bawah dan skrip akan melakukan sisanya. :)
================================================== ==
JAWABAN AWAL:
Saya ingin versionName meningkat secara otomatis juga. Jadi ini hanyalah tambahan dari jawaban CommonsWare yang bekerja dengan sempurna untuk saya. Inilah yang berhasil untuk saya
EDIT:
Karena saya agak malas, saya ingin pembuatan versi saya bekerja secara otomatis. Yang saya inginkan adalah memiliki Versi Build yang bertambah dengan setiap build, sedangkan Nomor Versi dan Nama Versi hanya meningkat ketika saya membuat build rilis.
Inilah yang telah saya gunakan selama setahun terakhir, dasar-dasarnya berasal dari jawaban CommonsWare dan jawaban saya sebelumnya, ditambah lagi. Ini menghasilkan versi berikut:
Nama Versi: 1.0.5 (123) -> Major.Minor.Patch (Build), Major dan Minor diubah secara manual.
Dalam build.gradle:
Patch dan versionCode ditingkatkan jika Anda merakit proyek Anda melalui terminal dengan 'assemble' , 'assembleRelease' atau 'aR' yang membuat folder baru di root proyek Anda yang disebut apk / RELEASE sehingga Anda tidak perlu melihat-lihat build / outputs / more / more / more untuk menemukan apk Anda.
Properti versi Anda harus terlihat seperti ini:
Jelas dimulai dengan 0. :)
sumber
Versi yang sedikit diperketat dari jawaban luar biasa CommonsWare membuat file versi jika tidak ada:
sumber
if(versionPropsFile.exists())
memastikan bahwa itu tidak meledak jika file tidak ada.versionProps.store(versionPropsFile.newWriter(), null)
menimpa file terlepas dari apakah file itu sudah ada.?:
dimaksud dengan Groovy. The Operator Elvis adalah pemendekan operator ternary.Saya melihat beberapa opsi untuk melakukan ini, dan akhirnya memutuskan bahwa lebih mudah menggunakan waktu saat ini untuk versionCode daripada mencoba menaikkan versionCode secara otomatis dan memeriksanya ke dalam sistem kontrol revisi saya.
Tambahkan yang berikut ini ke Anda
build.gradle
:Namun, jika Anda ingin mengupload build setelah tahun 2696, Anda mungkin ingin menggunakan solusi yang berbeda.
sumber
1510351294
:))Cara lain untuk mendapatkan secara
versionCode
otomatis adalah mengaturversionCode
jumlah komit digit
cabang yang diperiksa . Itu mencapai tujuan berikut:versionCode
dibuat secara otomatis dan konsisten pada mesin apa pun (termasuk aContinuous Integration
dan / atauContinuous Deployment
server ).versionCode
dapat dikirim ke GooglePlay.Menggunakan pustaka gradle-git untuk mencapai tujuan di atas. Tambahkan kode di bawah ini ke
build.gradle
file Anda/app
direktori:CATATAN: Agar metode ini berfungsi, yang terbaik adalah hanya menerapkan ke Google Play Store dari cabang yang sama (mis.
master
).sumber
Baru-baru ini saya sedang mengerjakan plugin gradle untuk Android yang membuat versionCode dan versionName secara otomatis. ada banyak penyesuaian. di sini Anda dapat menemukan info lebih lanjut tentang itu https://github.com/moallemi/gradle-advanced-build-version
sumber
Opsi lain, untuk menambah
versionCode
danversionName
, menggunakan stempel waktu.Mulai Januari, 1 2022 formattedDate = date.format ('yyMMddHHmm') melebihi kapasitas Integer
sumber
Untuk menaikkan versionCode hanya dalam versi rilis lakukan:
mengharapkan
c://YourProject/app/version.properties
file yang ada , yang akan Anda buat dengan tangan sebelum membangun pertamaVERSION_CODE=8
File
version.properties
:VERSION_CODE=8
sumber
Buat file
version.properties
Ganti
build.gradle
:}
Keluaran:
1.1.3.6
sumber
Tentukan versionName dalam
AndroidManifest.xml
Di dalam
android{...}
blok dibuild.gradle
tingkat aplikasi:android{...}
Blok luar dibuild.gradle
tingkat aplikasi:Setelah membuat APK hangus:
Catatan: Jika versionName Anda berbeda dari my, Anda perlu mengubah regex dan mengekstrak logika bagian .
sumber
Contoh yang ditunjukkan di atas tidak berfungsi karena alasan yang berbeda
Berikut adalah varian siap pakai saya berdasarkan ide dari artikel ini:
sumber
Penghargaan untuk CommonsWare (Jawaban yang Diterima) Paul Cantrell (Buat file jika tidak ada) ahmad aghazadeh (Nama versi dan kode)
Jadi saya menggabungkan semua ide mereka dan menghasilkan ini. Ini adalah solusi seret dan lepas untuk apa yang ditanyakan oleh posting pertama.
Ini akan secara otomatis memperbarui versionCode dan versionName sesuai dengan status rilis. Tentu saja Anda dapat memindahkan variabel untuk menyesuaikan dengan kebutuhan Anda.
sumber
Menggunakan Gradle Task Graph kita dapat memeriksa / mengganti tipe build.
Ide dasarnya adalah menaikkan versionCode pada setiap build. Di Setiap build penghitung yang disimpan dalam file version.properties . Ini akan terus diupdate pada setiap versi APK baru dan mengganti string versionCode dalam file build.gradle dengan nilai penghitung yang bertambah ini.
Tempatkan skrip di atas di dalam file build.gradle modul utama Anda.
Situs Referensi: http://devdeeds.com/auto-increment-build-number-using-gradle-in-android/
Terima kasih & Salam!
sumber
sumber
dalam versi Gradle 5.1.1 di mac ive mengubah cara pengambilan nama tugas, meskipun saya mencoba mendapatkan ragam / jenis build dari build tetapi malas untuk membagi nama tugas:
kode ini dari @just_user yang ini
sumber
Ada dua solusi yang sangat saya suka. Yang pertama bergantung pada Play Store dan yang lainnya bergantung pada Git.
Dengan menggunakan Play Store, Anda dapat menaikkan kode versi dengan melihat kode versi unggahan tertinggi yang tersedia . Manfaat dari solusi ini adalah bahwa unggahan APK tidak akan pernah gagal karena kode versi Anda selalu lebih tinggi dari apa pun yang ada di Play Store. Sisi negatifnya adalah mendistribusikan APK Anda di luar Play Store menjadi lebih sulit. Anda dapat menyiapkannya menggunakan Gradle Play Publisher dengan mengikuti panduan memulai dan memberi tahu plugin untuk menyelesaikan kode versi secara otomatis :
Dengan menggunakan Git, Anda dapat menaikkan kode versi berdasarkan berapa banyak komit dan tag yang dimiliki repositori Anda. Manfaatnya di sini adalah bahwa keluaran Anda dapat direproduksi dan tidak bergantung pada apa pun di luar repo Anda. Kelemahannya adalah Anda harus membuat commit atau tag baru untuk mendapatkan kode versi Anda. Anda dapat menyiapkannya dengan menambahkan plugin Version Master Gradle :
sumber