build.gradle 各類錯誤解決總結

前言:自從用上Android studio 以後,遇到各類gradle 的問題,前一段時間,把我常常遇到的問題總結了一下 ,大部分問題是Google 查到了,親測可用以後,總結分享出來。也感謝這些前輩們處理完這些問題留下的寶貴經驗總結。

1.Gradle DSL method not found runProguard()

從字面就能看出來,出現這個問題的緣由是找不到runProguard()這個方法了(調用這個方法的地方在每一個Module對應的build.gradle文件中)。
這是由於,當Android Studio升級時,也自動的將項目下的build.gradle文件(不是Module對應的build.gradle!)下的內容修改爲了:android


dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0-rc4'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

而升級以前是這樣的(以個人電腦爲例,應該是相似的):android-studio

dependencies {
        classpath 'com.android.tools.build:gradle:0.12.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

顯然,最簡單的解決方法是將gradle的版本改回去,此方法可能的確有效。
可是,這種作法顯然不是最好的方法。查閱官方文檔以後(http://tools.android.com/tech-docs/new-build-system)以後發現,在新版本的gradle中,runProguard這個方法已經廢棄了,而且改成新的方法了:minifyEnabled. 所以,正確的解決方法不是修改gradle的版本號,而是將項目中每一個Module對應的build.gradle文件中的runProguard方法名改成minifyEnabled,即:bash

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

問題完美解決。markdown


2.Error Plugin with id android-apt not found.note

刪除 Plugin with id ‘android-apt’ not foundapp


3.Could not find property outputFile on com android build gradle.note

Android studio從1.0 RC 4升級到1.0(其實就是打了一個8M的patch)後,這個時候相應的gradle的版本也會直接使用「com.android.tools.build:gradle:1.0.0」,若是這時你在gradle文件中又用到outputFile就會出現上述的問題。好吧,其實這也是gradle團隊搞的問題,有時候咱們多但願gradle能像android同樣,對舊版本有一個很是好的兼容性。
廢話很少說,直接說怎麼解決這個問題吧,這個問題的緣由是outputFile這個函數被換地方了。
old:函數

applicationVariants.all { variant -> ......
            variant.outputFile = new File(variant.outputFile.parent, name);
        ......
            }

}

new: gradle

applicationVariants.all { variant -> ......
            variant.outputs.each { output -> output.outputFile = new File(output.outputFile.parent, name);
        ......
            }

}

按上述方式改就ok了。ui

4.Gradle DSL method not found android().note

解決方法:
刪掉最外層的build.gradle中的google

這裏寫圖片描述

android {
    compileSdkVersion 19
    buildToolsVersion '21.1.1'
}
後續問題總結將繼續更新

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。(轉載請註明出自 AllenCoder)lua

相關文章
相關標籤/搜索