ข้อผิดพลาด: (26, 0) ไม่พบวิธีการ Gradle DSL: 'runProguard ()'


136

ฉันใช้ android studio 0.9.3 กับ gradle '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) ไม่พบวิธีการ Gradle DSL: 'runProguard ()'

จะแก้ไขได้อย่างไร?


1
คุณสามารถอ่านนี้สำหรับการอ้างอิง: tools.android.com/tech-docs/new-build-system มันจะส่องสว่างคำถามดังกล่าวสำหรับคุณ
IgorGanapolsky

คำตอบ:


97

เท่าที่ผมรู้ถูกแทนที่ด้วยrunProguard minifyEnabledฉันยังไม่แน่ใจว่าจะกำหนด config สำหรับ proguard ได้อย่างไร แต่การค้นหาโดย 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) ไม่พบคุณสมบัติ 'outputFile' ใน com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795
NickF

1
ที่ถูกต้องอ่านการเปลี่ยนแปลงภายใต้ 0.14.0 เพื่อทราบtools.android.com/tech-docs/new-build-system
Soham

ฉันแก้ไขเพื่อสะท้อนข้อผิดพลาดเกี่ยวกับ outputFile (แก้ไขการตรวจทานเพียร์กำลังรอการตรวจสอบ)
RoundSparrow hilltx

1
ฉันได้ลบapplicationVariants.all { variant ->บรรทัดที่ซ้ำกันแล้วแต่ยอมรับส่วนที่เหลือขอบคุณ
WarrenFaith

ฉันมีปัญหาเดียวกันกับวิธีการที่แตกต่างกัน: วิธีการ Gradle DSL ไม่พบ compileSdkVersion ()
Usman

131

แทนการใช้runProguardในแฟ้ม gradle minifyEnabledให้ลองใช้ สิ่งนี้ควรแก้ไขปัญหา runProguardเลิกใช้แล้วและหยุดทำงานในไม่ช้า

แก้ไข

หากต้องการใช้งานminifyEnabledgradle ควรอัปเดตเป็นเวอร์ชัน 2.2 หรือสูงกว่า


ข้อผิดพลาดถูกเปลี่ยนเป็น -> "ไม่พบวิธีการ Gradle DSL: 'minifyEnable ()'"
shaktiman_droid

คุณติดตั้งระบบ gradle build (2.2) ล่าสุดหรือไม่?
Varundroid

ฉันได้รับข้อผิดพลาดเดียวกัน ไม่พบ minifyEnable คุณหาทางออกหรือไม่?
Henrique

@Varundroid โอ้มันขึ้นอยู่กับ 2.2? ฉันมี 2.1
shaktiman_droid

6
ควรเป็นminifyEnabled(ไม่ใช่minifyEnable)
JRomero

112

การเปลี่ยนแปลงในไฟล์ build.gradle ของแอพอาจช่วย:

อายุ:

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

ทำในสิ่งที่คุณแนะนำยังคงได้รับข้อผิดพลาดเดียวกัน
Karan Khurana

26

หากคุณกำลังใช้ปลั๊กอินเวอร์ชัน 0.14.0 หรือสูงกว่าgradleคุณควรแทนที่ " runProguard" ด้วย " minifyEnabled" ในbuild.gradleไฟล์ของคุณ

เพียงเพิ่มสิ่งนี้

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

minifyEnabled falseหมายถึงชื่อประเภทการสร้างไม่สามารถเป็นmain หรือ androidTest (บังคับใช้โดยปลั๊กอิน) และจะต้องไม่ซ้ำกัน

Gradleปลั๊กอินAndroid รุ่นใหม่สามารถลบทรัพยากรที่ไม่ได้ใช้โดยอัตโนมัติ ชัยชนะครั้งใหญ่ที่นี่คือมันลบทรัพยากรที่ไม่ได้ใช้ไม่เพียง แต่ออกจากรหัสของคุณเอง แต่ที่สำคัญกว่านั้นคือไลบรารี่ที่คุณใช้งานอยู่ (เช่นที่มีทรัพยากรรวมอยู่เพื่อสนับสนุนคุณสมบัติที่คุณไม่ได้ใช้


@GeorgiAngelov ดีใจที่ได้รับความคิดเห็นของคุณ การเข้ารหัสที่มีความสุข
IntelliJ Amiya

25

ตั้งแต่Gradle 0.14.4ข้อผิดพลาดเหล่านี้ถูกรายงานว่าเป็นข้อผิดพลาดในการคอมไพล์

ดังนั้นคุณต้องแทนที่runProguard false/trueด้วยminifyEnabled false/true

การเปลี่ยนแปลงที่มีการระบุไว้ในการพัฒนาซอฟต์แวร์ Android บล็อก


21

การโอนย้ายโครงการ Gradle ไปเป็นเวอร์ชัน 1.0.0 ต้องมีการเปลี่ยนชื่ออย่างง่าย ๆ ทุกอย่างอธิบายไว้ที่นี่: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

สำหรับ proguard คุณสามารถเปลี่ยนชื่อ '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.

ฉันขอบคุณทั้งเอกสาร Android และคุณเน้นพวกเขา แต่ที่คุณพบทุกสิ่งอื่นจาก zipAlign ไปข้างหน้า? ไม่ต้องพูดถึงว่าจะพบไฟล์ใด ฉันไม่เห็นพวกเขาในไฟล์กำหนดค่าระดับรากของฉัน
user919426

3

นี่เป็นเพราะมีการอัพเดทเครื่องมือ Android gradle เป็น 0.14.3 เป็นไฟล์ "build.gradle" ของคุณแทน

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

โดย:

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

จนกว่าพวกเขาจะแก้ไข ...


1

runProguardถูกเปลี่ยนชื่อเป็นminifyEnabledในเวอร์ชั่น 0.14.0 (2014/10/31) ของ Gradle

ในการแก้ไขปัญหานี้คุณต้องเปลี่ยน runProguard เป็น minifyEnabled ในไฟล์build.gradleของโครงการของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.