Android Studio导入工程报错[Plugin with id 'com.android.application' not found]

2023-10-29

http://blog.csdn.net/seafishyls/article/details/53572939

版权声明:本文为博主原创文章,未经博主允许不得转载。

出错现象

互联网上下载了一份源码,想通过Android Studio导入查看源码,gradle同步的时候,出现了如下错误: 
工程同步后的现象 
大概意思是找不到: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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

从上述的注释可以看出该文件的作用: 
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'
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

这里面的配置都是大家耳熟能详的了,重点看看第一行,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()
    }
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

总结:将project里面的build脚本合并到module下的build.gradle 。通常出现标题头这种问题都是这样解决的。gradle里面支持 DSL的方式编写脚本,很cool!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio导入工程报错[Plugin with id 'com.android.application' not found] 的相关文章

  • 投递简历2500份,46次面试,只拿到了1个offer,IT行业怎么了?

    7月14日 一位被Meta解雇的PM 产品经理 在网上发布的一段文字 标题为 2500 Job apps 46 interviews 1 offer 就这件事以及CSDN发布的 2023中国开发者调查报告 和香帅的 2023年度演讲 聊聊目
  • Blockly 的配置

    本文基于Web Blockly 整理一下可视化编程工具 Blockly 的常用配置 包括 工作区配置 添加自定义块 配置工具箱 配置代码生成器等 固定尺寸工作区 可调尺寸工作区 添加自定义块 Block 工具箱 Toolbox 配置 代码生
  • Python 学习个人备忘录

    学习 Python 那么久 总有记不住的东西 用时到处找 实是不智 思索良久 刚才脑中闪现 在CSDN留个备忘 方便用时查找 2021 11 22 11 59AM 学习的细节是欢悦的历程 Python 官网 https www python
  • 数据库 对于索引的理解

    今天 看了下oracle数据库的索引 我一直不理解索引的机制到底是什么 正好看到了一篇博客 对理解索引有一定的好处 参考文献 https www cnblogs com java learner p 9567456 html
  • leetcode---链表类型---每日一题---第141题

    1 今日题目 第141题 环形链表 2 题目要求如下 给你一个链表的头节点 head 判断链表中是否有环 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos
  • 【车载以太网测试从入门到精通】——DoIP BootLoader刷写(含CAPL源码)

    系列文章目录 车载以太网测试从入门到精通 系列文章目录汇总 文章目录 系列文章目录 前言 一 DoIP刷写环境搭建 二 DoIP刷写工程使用方法 三 DoIP刷写CAPL源码 四 刷写工程下载链接 前言 DoIP概述 DoIP Diagno
  • C++之模板

    目录 前言 一 模板 1 1 模板的概念 1 2 函数模板 二 模板案例1 案例描述 三 普通函数与函数模板的区别 四 普通函数与函数模板的调用规则 五 模板具有局限性 六 类模板的作用 七 类模板中成员函数创建时机 八 类模板对象做函数参
  • k8s出现问题导致cpu使用率过高

    今天突然发现k8s的dashboard很卡 进到master节点 用top命令查看 发现如下信息 cpu使用率很高 主要是si 软中断 占用了80 iptables命令是占用cpu最高的 于是用iptables L命令查看iptables规

随机推荐

  • TCP的特性(包含三次握手、四次挥手问题)

    目录 TCP协议基础 一 确认应答 可靠性的核心 1 原理 2 其他场景 二 超时重传 可靠性 三 连接管理 三次握手 四次挥手 可靠性 1 三次握手 如何建立连接 2 四次挥手 如何断开连接 四 滑动窗口 效率 1 传输原理 2 窗口范围
  • html网页设计导航栏制作教程,使用CSS制作立体导航栏

    css制作的立体导航栏 具体实现代码如下所示 CSS制作立体导航 body background ebebeb nav width 560px height 50px font bold 0 50px Arial text align ce
  • numpy 中常用的数据保存、fmt多个参数

    在经常性读取大量的数值文件时 比如深度学习训练数据 可以考虑现将数据存储为Numpy格式 然后直接使用Numpy去读取 速度相比为转化前快很多 一 保存为二进制文件 npy npz 1 numpy save file arr allow p
  • 史上最全的KVM虚拟化部署(一)

    目录 1 kvm简介 首先 查看cpu是否支持虚拟化 2 kvm安装过程 a 防火墙优化 b 安装kvm组件 c 开启libvirtd服务 d 设置KVM网络为桥接 3 kvm管理 上传系统iso镜像到宿主机里 4 后半部分可以参考我的其他
  • 求职面试之项目经验介绍总结

    项目经验介绍 一定要突出 经验 二字 自己在工作 发现问题 并解决问题的过程 显得尤为珍贵 一般面试官会问到这个项目的整体架构如何 模块之间如何交互 遇到的最大难题是什么 如何解决 哪些问题是你发现并解决的 面试官通过这些问题 就可以考察求
  • Mathematica应用实例——输出二项分布的概率密度函数图(PDF of Binomial Distribution)

    在Excel中绘制二项分布的概率密度函数图 需要先使用公式制作数据集 然后基于数据集进行绘图 在Mathematica中 仅需一行命令即可 两者所需时间不是一个数量级 Mathematica代码 ListPlot Table k PDF B
  • 详解https是如何确保安全的?

    Https 介绍 1什么是Https HTTPS 全称 Hypertext Transfer Protocol over Secure Socket Layer 是以安全为目标的HTTP通道 简单讲是HTTP的安全版 即HTTP下加入SSL
  • leetcode 974. 和可被 K 整除的子数组

    给定一个整数数组 A 返回其中元素之和可被 K 整除的 连续 非空 子数组的数目 示例 输入 A 4 5 0 2 3 1 K 5 输出 7 解释 有 7 个子数组满足其元素之和可被 K 5 整除 4 5 0 2 3 1 5 5 0 5 0
  • 【3】Midjourney基本指令

    将自己的图片上传 AI训练 点击输入框的 号 会有上传文件 双击就可以选择图像上传 回车 图片上按右键 选复制链接 直接贴到输入框imagine prompt 后面 贴完后 先空一格 重要 再输入文本 可逗号分段 及参数 垫图不限只用1张图
  • FatFs文件系统配置多线程安全

    文件系统 FatFs 是用于小型嵌入式系统的通用 FAT exFAT 文件系统模块 FatFs 模块的编写符合 ANSI C C89 并与磁盘 I O 层完全分离 因此它独立于硬件平台 它可以集成到资源有限的小型微控制器中 例如 8051
  • 将cmd中的命令输出保存为txt文本文件

    在使用Windows XP中的cmd exe工具时 有时候我们想要把我们的输入命令及结果保存起来 我们可将命令运行的结果输出到文本文件 在你输入的命令后再加上 gt 和你想保存的文件地址和名字就可以了 例如 将Ping命令的运行结果输出到D
  • iOS开发系列--视图切换

    2014 08 28 08 27 by KenshinCui 105420 阅读 64 评论 收藏 编辑 概述 在iOS开发中视图的切换是很频繁的 独立的视图应用在实际开发过程中并不常见 除非你的应用足够简单 在iOS开发中常用的视图切换有
  • 集成灶排名十大品牌之一的火星人坚持科技创新,打破行业同质化“窘况”

    造型 千篇一律 油烟四窜 功能单一 是长期以来传统油烟机留给人们最直观的感觉 随着集成灶时代的来临 集造型时尚 吸油烟率出色 功能强大等优势于一身的集成灶被更多家庭选择 但是纵观近几年的集成灶十大排名榜 却也不难发现 市场中集成灶产品也出现
  • 泛型父类需要获取其子类定义的泛型类型即class对象方法

    获取泛型T的class对象 方法一 TypeToken 方法二 java lang reflect ParameterizedType Type demo 结果 方法一 TypeToken TypeToken 是google提供的一个解析J
  • vue:antV G2在vue中的使用(阿里图表,类似echarts)

    效果比echarts好看 官方文档 https g2 antv vision zh docs manual getting started 转载来源 https www jianshu com p a836ae8aeeb7 一 安装 npm
  • vue中将 后台返回的0,1等 代码转换成 男,女等汉字。

    vue中将 后台返回的0 1等 代码转换成 男 女等汉字 一 table表格中 只有一项或者两项时候 在table项 中 可以使用多项的方法 也可以使用 作用域插槽使用 二 table表格外部 的方法 多项的时候 例如 01 02 03 0
  • 层级型结构图

    WBS 工作分解结构 用来显示如何把项目可交付成果分解为工作包 有助于明确高层级的职责 OBS 组织分解结构 按照组织现有的部门 单元或团队排列 并在每个部门下列出项目活动或工作包 运营部门 信息技术或采购部 只需要找到其所在的OBS位置
  • R语言实战笔记--第十四章 主成分和因子分析

    R语言实战笔记 第十四章 主成分和因子分析 标签 空格分隔 R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近 其目的均是为了降维 以更简洁的数据去解释结果 但这两种方法其实是相差甚远 有幸找到一篇博文描述了这两者的不同
  • 转1:Python字符编码详解

    Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MBCSDBCSANSI本地化 321 GB
  • Android Studio导入工程报错[Plugin with id 'com.android.application' not found]

    http blog csdn net seafishyls article details 53572939 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 出错现象 原因分析 buildgradleProject xxxx bu