Mengganti nama file keluaran gradle apk, tetapi ada 2 apk

Saya mencoba memberi nama file APK aplikasi saya berdasarkan cabang git, yang bekerja dengan memasukkan parameter dengan jenkins. Namun, saya mendapatkan dua APK, dan ini tidak diinginkan karena salah satu tugas Gradle yang saya miliki mengunggah APK ke daftar terdistribusi. Inti dari penggantian nama APK ini adalah agar orang yang menerimanya mengetahui secara pasti cabang apa yang mereka lihat.

buildTypes {
    ...

    feature {
        signingConfig signingConfigs.debug

        applicationVariants.all { variant ->
            appendVersionNameVersionCode(variant, defaultConfig)
        }

    }

    ...
}

...

def appendVersionNameVersionCode(variant, defaultConfig) {
    //check if staging variant
    if(variant.name == android.buildTypes.feature.name){
        def branch = hasProperty('branch') ? branch.replaceAll('origin/', '') : "UNKNOWN"
        def file = variant.packageApplication.outputFile
        def fileName = "myapp-FEATURE-" + branch + ".apk"
        variant.packageApplication.outputFile = new File(file.parent, fileName)
    }
}

Kemudian perintah gradle dipanggil:

gradle assembleFeature --project-dir=/Path/To/myapp/ -Pbranch=origin/development

Dua file yang dihasilkan dari itu adalah:

  1. fitur-aplikasi.apk
  2. aplikasi-FITUR-pengembangan.apk

File 1 tidak diinginkan, dan pada akhirnya saya ingin mengganti nama file itu, daripada membuat file baru yaitu File 2.

Ada pemikiran?


person tango whiskey double    schedule 24.09.2014    source sumber


Jawaban (1)


Ternyata, gradle selalu mengemas 2 apk. Yang satu sejalan, dan yang lainnya tidak.

Untuk mengganti nama file apk yang selaras, saya harus menambahkan ini:

    if (variant.zipAlign) {
        newName = "myapp-FEATURE-" + branch + "-ALIGNED.apk"
        variant.outputFile = new File(file.parentFile, newName);
    }
person tango whiskey double    schedule 24.09.2014
comment
Apakah Anda yakin itu varian.zipAlign dan bukan output.zipAlign? Karena properti zipAlign pada varian memberi saya kesalahan properti tidak ditemukan di Android Studio/Gradle Versi 1.0.0. - person AgentKnopf; 23.01.2015
comment
versi terbaru gradle telah mengubah properti 'zipAlign' menjadi 'zipAlignEnabled', jadi Anda perlu menggunakan varian.zipAlignEnabled untuk menilai. - person Tinker Sun; 18.03.2015
comment
Android studio tidak secara otomatis menemukan apk ini dan melaporkan kesalahan Jalur lokal tidak ada.. Saya kira ini bug Android Studio atau? - person Ewoks; 24.09.2015