Kesalahan: (26, 0) Metode Gradle DSL tidak ditemukan: 'runProguard ()'

136

Saya menggunakan android studio 0.9.3 dengan gradle 'com.android.tools.build:gradle:0.14.+'

terapkan plugin: '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.+'
}

Project yang dikompilasi sebelumnya tanpa perubahan apa pun pada file tersebut, saya mendapatkan: Error: (26, 0) Metode Gradle DSL tidak ditemukan: 'runProguard ()'

Bagaimana cara memperbaikinya?

NickF
sumber
1
Anda dapat membaca ini untuk referensi: tools.android.com/tech-docs/new-build-system . Ini akan menjelaskan pertanyaan seperti itu untuk Anda.
IgorGanapolsky

Jawaban:

97

Sejauh yang saya tahu runProguarddiganti dengan minifyEnabled. Saya masih tidak yakin bagaimana mendefinisikan konfigurasi untuk proguard tetapi pencarian Google akan membantu Anda untuk mengetahuinya.

Edit:

Untuk outFilemembaca di sini: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 bagaimana mereka melakukannya.

Singkatnya: mereka menggunakan versi yang lebih kompleks:

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 + "]");
    }
}
WarrenFaith
sumber
1
sekarang ada masalah dengan Kesalahan: (32, 0) Tidak dapat menemukan properti 'outputFile' di com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795.
NickF
1
Itu benar, baca perubahan di bawah 0.14.0 untuk mengetahui alat perubahan yang tepat.android.com/tech-docs/new-build-system
Soham
Saya mengedit untuk mencerminkan kesalahan tentang outputFile (edit tinjauan sejawat yang sedang menunggu)
RoundSparrow hilltx
1
Saya telah menghapus applicationVariants.all { variant ->baris duplikat tetapi menerima sisanya, terima kasih
WarrenFaith
saya memiliki masalah yang sama dengan metode yang berbeda: Metode Gradle DSL tidak ditemukan compileSdkVersion ()
Usman
131

Daripada menggunakan runProguarddi file gradle Anda, coba gunakan minifyEnabled. Ini harus memperbaiki masalah. runProguardsudah usang dan akan segera berhenti bekerja.

EDIT

Untuk menggunakan minifyEnabled, gradle harus diperbarui ke versi 2.2 atau lebih tinggi.

Varundroid
sumber
Kesalahan sekarang diubah menjadi -> "Metode Gradle DSL tidak ditemukan: 'minifyEnable ()'"
shaktiman_droid
apakah Anda menginstal sistem build gradle (2.2) terbaru?
Varundroid
Saya mendapatkan kesalahan yang sama. tidak ditemukan minifyEnable. Apakah Anda menemukan solusinya?
Henrique
@Varundroid Oh apakah itu tergantung pada 2.2? Saya memiliki 2.1
shaktiman_droid
6
Seharusnya minifyEnabled(tidak minifyEnable)
JRomero
112

Perubahan dalam file app build.gradle dapat membantu:

tua:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

baru:

buildTypes {
    release {

        minifyEnabled false // new version

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Andrew
sumber
melakukan apa yang Anda sarankan masih mendapatkan kesalahan yang sama.
Karan Khurana
26

Jika Anda menggunakan gradleplugin versi 0.14.0 atau lebih tinggi , Anda harus mengganti " runProguard" dengan " minifyEnabled" di build.gradlefile Anda .

Tambahkan saja ini.

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

minifyEnabled falseBerarti nama Build Type tidak boleh main atau androidTest (ini diberlakukan oleh plugin), dan harus unik satu sama lain.

Versi baru Gradleplugin Android , dapat secara otomatis menghapus sumber daya yang tidak digunakan. Keuntungan besar di sini adalah ia menghapus sumber daya yang tidak digunakan tidak hanya dari kode Anda sendiri, tetapi yang lebih penting dari pustaka yang Anda gunakan (misalnya, di mana terdapat sumber daya yang disertakan untuk mendukung fitur yang sebenarnya tidak Anda gunakan dari aplikasi Anda).

IntelliJ Amiya
sumber
@GeorgiAngelov Senang menerima komentar Anda. Selamat coding
IntelliJ Amiya
25

Mulai Gradle 0.14.4 , kesalahan ini dilaporkan sebagai kesalahan waktu kompilasi.

Jadi Anda harus mengganti runProguard false/truedenganminifyEnabled false/true

Perubahan tersebut tercantum di Blog Pengembang Android .

sandalone
sumber
21

Memigrasi Proyek Gradle ke versi 1.0.0 memerlukan beberapa pekerjaan penggantian nama yang mudah, semuanya dijelaskan di sini: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Untuk proguard Anda cukup mengganti nama 'runProguard' => 'minifyEnabled', untuk yang lain lihat di bawah:

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.
orang gila
sumber
Saya menghargai dokumen android dan juga Anda menyorotnya, tetapi di mana Anda menemukan semua hal lain dari zipAlign ke depannya? Ada kelalaian untuk menyebutkan di mana file ini akan ditemukan. Saya tidak melihatnya di file konfigurasi root gradle saya.
pengguna919426
3

Ini karena alat android gradle diperbarui ke 0.14.3. Ke dalam file "build.gradle", ganti

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

oleh:

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

Sampai mereka memperbaikinya…

stankocken
sumber
1

runProguard telah diganti namanya menjadi minifyEnabled di Gradle versi 0.14.0 (2014/10/31).

Untuk memperbaikinya, Anda perlu mengubah runProguard menjadi minifyEnabled di file build.gradle proyek Anda.

masukkan deskripsi gambar di sini

Biswajit Karmakar
sumber