android studio - 導入工程報錯[Plugin with id 'com.android.application' not found]


 出錯現象:

大概意思是找不到:com.android.application 插件,以上現象對於初學者來說會經常碰到,下面分析下產生的原因。

原因分析

首先來看看導入后的工程結構: 

對於此工程結構,是否有個疑問? 這是未正常同步完成的結構,Gradle Scripts下面似乎少了個 build.gradle ,上圖紅框部分描述清楚了是 Module: GraphicsDemo ,表示該 build.gradle 是Module的,而不是Project的。來看看一個正常的 Project+Module的工程是怎樣的: 

請注意紅框位置,一個是Project, 一個是 Module 。這兩個 build.gradle 究竟啥區別呢? 眾所周知,Android Studio在組織工程結構的時候是以Project作為基礎,可以在它的基礎上創建多個Module,正如上圖所示!不少開發人員在貢獻自己的代碼到Github或者CSDN下載頻道的時候,就直接把Module 整個文件夾丟上去了,導致下載使用的人出現了上述錯誤現象。 究其原因,還是先了解下 兩種類型 gradle文件的錯用吧!

build.gradle(Project: xxxx)

該文件是整個工程編譯的全局文件,優先級最高 
源碼如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
// 優先級最高的build文件,先於Module的build.gradle執行
buildscript {
    repositories {
        jcenter() //指定maven鏡像,下同
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0' //指定classpath
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir //指定clean的時候清除掉指定目錄
}

從上述的注釋可以看出該文件的作用: 
1. 編譯工程最頂級的文件,優先級最高; 
2. 指定maven倉庫地址,gradle相關的包是從maven拉取下來的; 
3. 指定 classpath,不然無法找到某些類,標題出現的問題就是這個原因。

build.gradle(Module: xxx)

該文件是某個Module編譯時候用到的文件 
源碼如下:

//注意:Gradle是通過插件來區分是可執行的工程還是libiary工程,下面表示可執行工程
apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "mashen.graphicsdemo"
        minSdkVersion 17
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

這里面的配置都是大家耳熟能詳的了,重點看看第一行,apply plugin: ‘com.android.application’ 表示當前Module是可執行工程。 然而找不到這個插件,原因就是 com.android.application 來源於 com.android.tools.build:gradle:2.2.0 。 這下估計都明白了!

解決方案:

將build.gradle里面的配置腳本拷貝到Module下的 build.gradle里面,也就是下面的腳本:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        //注意:更換成自己的AS的版本
    }
}
allprojects {
    repositories {
        jcenter()
    }
}

查看gradle版本: Terminal —> gradle -v (前提是配置了環境變量)

本文轉自:http://blog.csdn.net/seafishyls/article/details/53572939

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM