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
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库