त्रुटि: (26, 0) ग्रेड डीएसएल विधि नहीं मिली: 'रनप्रो गार्ड ()'


136

मैं एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं 0.9.3 ग्रेडल के साथ 'com.android.tools.build:gradle:0.14.+'

प्लगइन लागू करें: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "xxx.xxx.xxx"
        minSdkVersion 16
        targetSdkVersion 19
        versionCode 1
        versionName "1.0.11"
    }

    signingConfigs{
        releaseConfig{
            storeFile file("xxxxxxx")
            storePassword = "xxxx"
            keyAlias = "xxxx"
            keyPassword = "xxxx"
        }
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.releaseConfig

            // adds version to file name
            applicationVariants.all { variant ->
                def file = variant.outputFile
                variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
            }
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    // You must install or update the Google Repository through the SDK manager to use this dependency.
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    compile 'com.android.support:support-v4:19.+'
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.mcxiaoke.volley:library:1.0.6'
    compile 'com.google.code.gson:gson:2.2.+'
}

उस फ़ाइल में बिना किसी परिवर्तन के पहले संकलित परियोजना, मुझे मिल रही है: त्रुटि: (26, 0) ग्रेड डीएसएल विधि नहीं मिली: 'रनप्रो गार्ड ()'

उसे कैसे ठीक करें?


1
आप इसे संदर्भ के लिए पढ़ सकते हैं: tools.android.com/tech-docs/new-build-system । यह आपके लिए ऐसे सवालों पर रोशनी डालेगा।
इगोरगानापोलस्की

जवाबों:


97

जहां तक ​​मुझे पता है कि runProguardइसे बदल दिया गया था minifyEnabled। मुझे अभी भी यकीन नहीं है कि प्रोगार्ड के लिए कॉन्फ़िगरेशन को कैसे परिभाषित किया जाए लेकिन Google खोज को यह पता लगाने में मदद करनी चाहिए।

संपादित करें:

outFileयहां पढ़ने के लिए : https://groups.google.com/forum/# ​​.topic / adt-dev / 4_- 5NvxuFB0 वे इसे कैसे करते हैं।

संक्षेप में: उन्होंने एक अधिक जटिल संस्करण का उपयोग किया:

applicationVariants.all { variant ->

    variant.outputs.each { output ->

        def apk = output.outputFile;
        def newName;

        // newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + ".apk");
        if (variant.buildType.name == "release") {
            newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-release.apk");
        } else {
            newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-beta.apk");
        }

        output.outputFile = new File(apk.parentFile, newName);

        if (output.zipAlign) {
            output.outputFile = new File(apk.parentFile, newName.replace("-unaligned", ""));
        }

        logger.info('INFO: Set outputFile to ' + output.outputFile + " for [" + output.name + "]");
    }
}

1
अब इसमें त्रुटि की समस्या है: (32, 0) com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795 पर संपत्ति 'outputFile' नहीं खोज सका।
NickF

1
यही कारण है कि सही है, तो परिवर्तन 0.14.0 के तहत पढ़ सटीक परिवर्तन को पता है tools.android.com/tech-docs/new-build-system
सोहम

मैं outputFile के बारे में त्रुटि को प्रतिबिंबित करने के लिए संपादित किया गया (वर्तमान में प्रतीक्षा कर रहे समीक्षा की समीक्षा करें)
RoundSparrow Hilltx

1
मैंने डुप्लिकेट की गई applicationVariants.all { variant ->लाइन को हटा दिया है, लेकिन बाकी को स्वीकार कर लिया है, धन्यवाद
वॉरेनफैथ

मैं अलग विधि के साथ एक ही समस्या है: ग्रेड डीएसएल विधि compileSdkersion नहीं मिला ()
उस्मान

131

runProguardअपनी वर्गीकृत फ़ाइल में उपयोग करने के बजाय, उपयोग करने का प्रयास करें minifyEnabled। इस मुद्दे को ठीक करना चाहिए। runProguardवंचित है और जल्द ही काम करना बंद कर देगा।

संपादित करें

उपयोग करने के लिए minifyEnabled, gradle को 2.2 या इसके बाद के संस्करण में अद्यतन किया जाना चाहिए।


त्रुटि को अब बदल दिया गया है -> "ग्रेड डीएसएल विधि नहीं मिली: 'मिनिफ़ाइनेबल ()'"
shaktiman_droid

क्या आपने नवीनतम ग्रेडल बिल्ड सिस्टम (2.2) स्थापित किया है?
वरुंडोइड

मुझे वही त्रुटि मिल रही है। नहीं मिल रहा है। क्या आपको एक समाधान मिला?
हेनरिक

@Varundroid ओह यह 2.2 पर निर्भर करता है? मेरे पास 2.1 है
shaktiman_droid

6
होना चाहिए minifyEnabled(नहीं minifyEnable)
JRomero

112

एप्लिकेशन बिल्ड में बदलें। उन्नत फ़ाइल मदद कर सकती है:

पुराना:

buildTypes {
    release {

        runProguard false // this line has to be changed

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

नया:

buildTypes {
    release {

        minifyEnabled false // new version

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

आपने वही सुझाव दिया जो अभी भी वही त्रुटि हो रही है।
करण खुराना

26

यदि आप संस्करण 0.14.0 या उच्चतर gradleप्लगइन का उपयोग कर रहे हैं , तो आपको अपनी फ़ाइलों में " runProguard" के साथ " minifyEnabled" बदलना चाहिए build.gradle

बस इसे जोड़ें।

 buildTypes {           
     release {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                }
            }

minifyEnabled falseमीन्स बिल्ड टाइप नाम मुख्य या androidTest नहीं हो सकते हैं (यह प्लगइन द्वारा लागू किया गया है), और यह कि उन्हें एक दूसरे के लिए अद्वितीय होना चाहिए।

एंड्रॉइड Gradleप्लगइन का नया संस्करण , अप्रयुक्त संसाधनों को स्वचालित रूप से हटा सकता है। यहां बड़ी जीत यह है कि यह अप्रयुक्त संसाधनों को न केवल आपके स्वयं के कोड से निकालता है, बल्कि आपके द्वारा उपयोग किए जा रहे पुस्तकालयों से अधिक महत्वपूर्ण है (उदाहरण के लिए ऐसे संसाधन शामिल हैं जो उन सुविधाओं का समर्थन करते हैं जिन्हें आप वास्तव में अपने ऐप से उपयोग नहीं कर रहे हैं)।


@GeorgiAngelov आपकी टिप्पणी प्राप्त करने के लिए खुशी है। हैप्पी कोडिंग
इंटेलीज अमिया

25

ग्रेडेल 0.14.4 के रूप में , इन त्रुटियों को संकलन-समय त्रुटियों के रूप में सूचित किया जाता है।

आप को बदलने के लिए तो runProguard false/trueसाथminifyEnabled false/true

परिवर्तन Android डेवलपर्स ब्लॉग पर सूचीबद्ध हैं ।


21

माइग्रेटिंग ग्रैडल प्रोजेक्ट्स को संस्करण 1.0.0 में कुछ आसान नाम बदलने के काम की जरूरत है, सब कुछ यहाँ वर्णित है: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0

प्रोगार्ड के लिए आप नीचे दिए गए अन्य लोगों के लिए 'runProguard' => 'minifyEnabled' का नाम बदल सकते हैं:

Renamed Properties in BuildTypes:    
runProguard => minifyEnabled
zipAlign => zipAlignEnabled
jniDebugBuild => jniDebuggable
renderscriptDebug => renderscriptDebuggable

Renamed Properties in ProductFlavors:    
flavorGroups => flavorDimensions
packageName => applicationId
testPackageName => testApplicationId
renderscriptSupportMode => renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode => renderscriptNdkModeEnabled
Other Name changes

InstrumentTest was renamed to androidTest.

मैं दोनों एंड्रॉइड डॉक्स की सराहना करता हूं और साथ ही उन्हें उजागर कर रहा हूं, लेकिन आपको zipAlign से आगे के लिए सब कुछ कहां मिलेगा? यह उल्लेख करने के लिए उपेक्षा है कि यह किन फाइलों में मिलेगी। मैं उन्हें अपने रूट ग्रेड विन्यास फाइल में नहीं देखता हूं।
user919426

3

यह ०.१४.३ के लिए वर्गीकृत एंड्रॉइड टूल के अपडेट के कारण है। अपनी फ़ाइल में "build.gradle" बदलें

classpath 'com.android.tools.build:gradle:0.14.+'

द्वारा:

classpath 'com.android.tools.build:gradle:0.14.2'

जब तक वे इसे ठीक नहीं कर लेते ...


1

रनप्रो गार्ड का नाम बदलकर ग्रेडल के 0.14.0 (2014/10/31) में छोटा कर दिया गया है ।

इसे ठीक करने के लिए, आपको अपने प्रोजेक्ट की build.gradle फ़ाइल में minifyEnabled करने के लिए runProguard को बदलना होगा ।

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.