Hata: (26, 0) Gradle DSL yöntemi bulunamadı: 'runProguard ()'


136

Grad ile android studio 0.9.3 kullanıyorum 'com.android.tools.build:gradle:0.14.+'

eklenti uygula: '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.+'
}

Proje daha önce bu dosyada herhangi bir değişiklik olmadan derlenmiş, alıyorum: Hata: (26, 0) Gradle DSL yöntemi bulunamadı: 'runProguard ()'

Bunu nasıl düzeltirim?


1
Referans için bunu okuyabilirsiniz: tools.android.com/tech-docs/new-build-system . Bu soruları sizin için aydınlatacaktır.
IgorGanapolsky

Yanıtlar:


97

Bildiğim kadarıyla runProguardyerini aldı minifyEnabled. Proguard için yapılandırmayı nasıl tanımlayacağımdan hala emin değilim, ancak bir Google araması bunu bulmanıza yardımcı olacaktır.

Düzenle:

İçin outFileburada okuyun: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 onlar bunu nasıl.

Kısacası: daha karmaşık bir versiyon kullandılar:

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
şimdi Hata ile ilgili sorun var: (32, 0) com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795 üzerinde 'outputFile' özelliği bulunamadı.
NickF

1
Bu doğru, kesin değişiklikleri öğrenmek için 0.14.0 altındaki değişiklikleri okuyun. Android.com/tech-docs/new-build-system
Soham

OutputFile ile ilgili hatayı yansıtacak şekilde düzenlendi (şu anda bekleyen emsal incelemesini düzenle)
RoundSparrow hilltx

1
Çoğaltılan applicationVariants.all { variant ->satırı kaldırdım, ancak gerisini kabul
ettim

farklı yöntemle aynı sorun var: Gradle DSL yöntemi bulunamadı compileSdkVersion ()
Usman

131

runProguardGradle dosyanızda kullanmak yerine, kullanmayı deneyin minifyEnabled. Bu sorunu çözmelidir. runProguardkullanımdan kaldırıldı ve yakında çalışmayı durdurun.

DÜZENLE

Kullanmak için minifyEnabledsınıf, 2.2 veya daha yeni bir sürüme güncellenmelidir.


Hata şu şekilde değiştirildi -> "Gradle DSL yöntemi bulunamadı: 'minifyEnable ()'"
shaktiman_droid

en son kepçe sistemi (2.2) kuruldu mu?
Varundroid

Aynı hatayı alıyorum. minifyEnable bulunamadı. bir çözüm buldun mu?
Henrique

@Varundroid Ah 2.2'ye bağlı mı? Ben var 2.1
shaktiman_droid

6
Olmalı minifyEnabled(olmamalı minifyEnable)
JRomero

112

Uygulama build.gradle dosyasındaki değişiklik yardımcı olabilir:

eski:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

yeni:

buildTypes {
    release {

        minifyEnabled false // new version

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

önerdiğini hala aynı hatayı alıyorum yaptı.
Karan Khurana

26

Eklentinin 0.14.0 veya daha yeni bir sürümünü kullanıyorsanız dosyalarınızda " " gradleyerine " runProguard" ifadesini değiştirmeniz gerekir .minifyEnabledbuild.gradle

Sadece ekleyin.

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

minifyEnabled falseDerleme Türü adları ana veya androidTest olamaz (bu eklenti tarafından zorlanır ) ve birbirlerine özgü olmaları gerekir.

Android Gradleeklentisinin yeni sürümü, kullanılmayan kaynakları otomatik olarak kaldırabilir. Buradaki büyük kazanç, kullanılmayan kaynakları sadece kendi kodunuzdan değil, daha da önemlisi kullandığınız kütüphanelerden kaldırmasıdır (örneğin, uygulamanızdan gerçekte kullanmadığınız özellikleri desteklemek için dahil edilen kaynaklar varsa).


@GeorgiAngelov Yorumlarınızı almaktan mutluluk duyuyoruz. Mutlu kodlama
IntelliJ Amiya

25

Gradle 0.14.4 itibariyle , bu hatalar derleme zamanı hataları olarak rapor edilir.

Yani yerine koymak runProguard false/truezorundaminifyEnabled false/true

Değişiklikler Android Geliştiricileri Blogunda listelenmiştir .


21

Sürüm Projelerini sürüm 1.0.0'a geçirmek için bazı kolay yeniden adlandırma çalışmaları gerekir, her şey burada açıklanmıştır: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Proguard için 'runProguard' => 'minifyEnabled' adını yeniden adlandırabilirsiniz, diğerleri için aşağıya bakın:

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.

Hem android dokümanları hem de onları vurguladığınız için teşekkür ederim, ancak zipAlign'ten başka her şeyi nerede buluyorsunuz? Bunun hangi dosyalarda bulunacağından bahsetmeyi ihmal ediyoruz. Onları root gradle config dosyamda görmüyorum.
user919426

3

Bu, gradle android araçlarının 0.14.3'e güncellenmesinden kaynaklanmaktadır. "Build.gradle" dosyanıza değiştirin

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

tarafından:

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

Düzeltene kadar…


1

runProguard , Gradle'ın 0.14.0 ( 2014/10/31 ) sürümünde minifyEnabled olarak yeniden adlandırıldı .

Bunu düzeltmek için, projenizin build.gradle dosyasındaki minifyEnabled komutunu çalıştırmak için runProguard öğesini değiştirmeniz gerekir .

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.