การเปลี่ยนชื่อไฟล์เอาต์พุต gradle apk แต่มี 2 apk

ฉันกำลังพยายามตั้งชื่อไฟล์ APK ของแอปพลิเคชันของฉันตามสาขา git ซึ่งทำงานโดยส่งพารามิเตอร์ด้วย jenkins อย่างไรก็ตาม ฉันลงเอยด้วย APK สองรายการ และนี่เป็นสิ่งที่ไม่พึงประสงค์เนื่องจากหนึ่งในงาน Gradle ที่ฉันได้อัปโหลด APK ไปยังรายการที่แจกจ่าย จุดรวมของการเปลี่ยนชื่อ APK นี้คือเพื่อให้ผู้ที่ได้รับรู้ว่าตนกำลังดูสาขาใดอยู่

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)
    }
}

จากนั้นคำสั่ง gradle จะถูกเรียกใช้:

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

ไฟล์สองไฟล์ที่สร้างขึ้นคือ:

  1. แอพ-feature.apk
  2. myapp-FEATURE-development.apk

ไม่ต้องการไฟล์ 1 และในที่สุดฉันก็ต้องการเปลี่ยนชื่อไฟล์นั้น แทนที่จะสร้างไฟล์ใหม่ซึ่งก็คือไฟล์ 2

มีความคิดอะไรบ้าง?


person tango whiskey double    schedule 24.09.2014    source แหล่งที่มา


คำตอบ (1)


ปรากฎว่า gradle จะทำแพ็คเกจสูงสุด 2 apk เสมอ อันที่สอดคล้องและอันที่ไม่

ในการเปลี่ยนชื่อไฟล์ APK ที่สอดคล้อง ฉันต้องเพิ่มสิ่งนี้:

    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
คุณแน่ใจหรือไม่ว่าเป็น Variant.zipAlign ไม่ใช่ Output.zipAlign เนื่องจากคุณสมบัติ zipAlign บนตัวแปรทำให้ฉันมีคุณสมบัติไม่พบข้อผิดพลาดใน Android Studio/Gradle เวอร์ชัน 1.0.0 - person AgentKnopf; 23.01.2015
comment
gradle เวอร์ชันล่าสุดได้เปลี่ยนคุณสมบัติ 'zipAlign' เป็น 'zipAlignEnabled' ดังนั้นคุณต้องใช้ Variant.zipAlignEnabled เพื่อตัดสิน - person Tinker Sun; 18.03.2015
comment
Android studio ไม่พบ apk นี้โดยอัตโนมัติและรายงานว่า Local path ไม่มีข้อผิดพลาด .. ฉันเดาว่านี่เป็นข้อผิดพลาดของ Android Studio หรือไม่ - person Ewoks; 24.09.2015