मैं AndroidStudio के साथ जेनरेट किए गए एपीके का नाम बदलने के लिए अपनी ग्रेडल स्क्रिप्ट में निम्न कोड का उपयोग कर रहा था:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(output.outputFile.parent, defaultConfig.versionCode + "_" + output.outputFile.name)
    }
}

तो यह नामों के साथ एपीके उत्पन्न कर रहा था जैसे: 345-app-release.apk, जहां 345 संस्करण कोड है।

लेकिन AndroidStudio 3.0 में अपडेट करने के बाद यह निम्न त्रुटि देता है:

ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filter=[]}} प्रकार के com.android.build.gradle.internal.api.ApkVariantOutputImpl के लिए रीड-ओनली प्रॉपर्टी 'आउटपुटफाइल' का मान सेट नहीं कर सकता।

मैं नए बिल्ड टूल्स के साथ एक समान नामकरण कैसे प्राप्त कर सकता हूं।

58
Addev 26 अक्टूबर 2017, 11:28

6 जवाब

सबसे बढ़िया उत्तर

output.outputFile के बजाय output.outputFileName का प्रयोग करें

113
AndrzejSc 26 अक्टूबर 2017, 16:35

इस कोड को आजमाएं:

buildTypes {

       applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def name = "myapp_v${variant.versionName}(${variant.versionCode}).apk"
                output.outputFileName = name
            }
        }

    }
14
naitbrahim 27 जून 2018, 14:32

ग्रेडेल 3.1.0 में या उसके बाद

कोड के नीचे प्रयास करें

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            outputFileName = new File(
                    "release_build", // here you can change the name
                    output.outputFile.name)
        }
}
9
Ghanshyam Nayma 22 मई 2018, 12:27

मेरे मामले में मैंने इसे केवल ग्रैडल 4.4 (मेरे मामले में) में अपडेट करने से इनकार करके हल किया। इसलिए जब स्टूडियो पूछता है (जब आप पहली बार अपना प्रोजेक्ट खोलते हैं) तो आप ग्रैडल को इंस्टेंट रन का समर्थन करने के लिए अपडेट करते हैं, आदि बस मना कर दें और आप ठीक होना चाहिए।

1
Surbhit Rao 28 मई 2018, 08:45

अपना कोड इसमें बदलें: -

    applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(output.outputFile.parent, "${variant.applicationId}-${variant.versionName}.apk")
    }
}
0
Chetan 17 मई 2018, 21:17

मेरे लिए क्या काम किया था 1. प्रत्येक को "सभी" में बदलें 2. output.outputFile को "outputFileName" में बदलें 3. टर्मिनल में $./gradlew clean build चलाएं

उदाहरण के लिए, यदि आपकी कलाकृतियाँ.ग्रेडल सेटिंग यह थीं:

android.applicationVariants.all { variant ->

variant.outputs.each { output ->
    def finalVersionCode = 10000 + versionCode
    output.versionCodeOverride = finalVersionCode
    output.outputFile = new File(
         output.outputFile.parent,       output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
}

}

तब आप इसे इसमें बदलना चाहेंगे:

android.applicationVariants.all { variant ->

variant.outputs.all { output ->
    def finalVersionCode = 10000 + versionCode
    output.versionCodeOverride = finalVersionCode
    outputFileName = new File(
         output.outputFile.parent,
         outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
}

}

1
notyourguru 15 अक्टूबर 2018, 20:52