Android studio:Could not find method compile() for arguments 问题解决及两种解决方法探讨延伸

news2024/11/15 18:54:10

Could not find method compile() for arguments

问题全称

Could not find method compile() for arguments [org.tensorflow:tensorflow-lite:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
如图
在这里插入图片描述

解决方法1(简单)

将 compile 改为 implementation 即可,如图
在这里插入图片描述
参考博客could not find method compile()for arguments

解决方法2(进阶)

将 compile 改为 api 即可,如图
在这里插入图片描述

引发问题原因及解决方法探讨延伸

参考博客
Android Studio3.X中dependencies依赖api、compile和implementation的区别
Android Studio 依赖方式 implementation 与 compile(API dependency)的区别

引发问题原因为

在android studio 3.0 版本之前,第三方库或者module的依赖方式有compile、implementation。
android studio 3.0 版本之后,compile被取代,改用API dependency,实质完全等同于compile。

探讨延伸compile,api,implementation

如果你想细致得去研究,官方文档关于这一部分的地址是,强烈推荐。
添加 build 依赖项
关键的部分我直接复制简中的过来。

配置行为
implementationGradle 会将依赖项添加到编译类路径,并将依赖项打包到 build 输出。不过,当您的模块配置 implementation 依赖项时,会让 Gradle 了解您不希望该模块在编译时将该依赖项泄露给其他模块。也就是说,其他模块只有在运行时才能使用该依赖项。 使用此依赖项配置代替 api 或 compile(已废弃)可以显著缩短构建时间,因为这样可以减少构建系统需要重新编译的模块数。例如,如果 implementation 依赖项更改了其 API,Gradle 只会重新编译该依赖项以及直接依赖于它的模块。大多数应用和测试模块都应使用此配置。
apiGradle 会将依赖项添加到编译类路径和 build 输出。当一个模块包含 api 依赖项时,会让 Gradle 了解该模块要以传递方式将该依赖项导出到其他模块,以便这些模块在运行时和编译时都可以使用该依赖项。此配置的行为类似于 compile(现已废弃),但使用它时应格外小心,只能对您需要以传递方式导出到其他上游消费者的依赖项使用它。这是因为,如果 api 依赖项更改了其外部 API,Gradle 会在编译时重新编译所有有权访问该依赖项的模块。因此,拥有大量的 api 依赖项会显著增加构建时间。除非要将依赖项的 API 公开给单独的模块,否则库模块应改用 implementation 依赖项。
compileOnlyGradle 只会将依赖项添加到编译类路径(也就是说,不会将其添加到构建输出)。如果您创建 Android 模块时在编译期间需要相应依赖项,但它在运行时可有可无,此配置会很有用。如果您使用此配置,那么您的库模块必须包含一个运行时条件,用于检查是否提供了相应依赖项,然后适当地改变该模块的行为,以使该模块在未提供相应依赖项的情况下仍可正常运行。这样做不会添加不重要的瞬时依赖项,因而有助于减小最终应用的大小。此配置的行为类似于 provided(现已废弃)。注意:您不能将 compileOnly 配置与 AAR 依赖项配合使用。
runtimeOnlyGradle 只会将依赖项添加到 build 输出,以便在运行时使用。也就是说,不会将其添加到编译类路径。 此配置的行为类似于 apk(现已废弃)。
annotationProcessor如需添加对作为注解处理器的库的依赖,您必须使用 annotationProcessor 配置将其添加到注解处理器的类路径。这是因为,使用此配置可以将编译类路径与注释处理器类路径分开,从而提高 build 性能。如果 Gradle 在编译类路径上找到注解处理器,则会禁用避免编译功能,这样会对构建时间产生负面影响(Gradle 5.0 及更高版本会忽略在编译类路径上找到的注解处理器)。
lintChecks使用此配置可以添加您希望 Gradle 在构建项目时执行的 lint 检查。注意:使用 Android Gradle 插件 3.4.0 及更高版本时,此依赖项配置不再将 lint 检查打包在 Android 库项目中。如需将 lint 检查依赖项包含在 AAR 库中,请使用下面介绍的 lintPublish 配置。
lintPublish在 Android 库项目中使用此配置可以添加您希望 Gradle 编译成 lint.jar 文件并打包在 AAR 中的 lint 检查。这会使得使用 AAR 的项目也应用这些 lint 检查。如果您之前使用 lintChecks 依赖项配置将 lint 检查添加到已发布的 AAR 中,则需要迁移这些依赖项以改用 lintPublish 配置。
apkGradle 只会将依赖项添加到 build 输出,以便在运行时使用。也就是说,不会将其添加到编译类路径。 此配置已废弃(在 AGP 1.0-4.2 中可用)。
compileGradle 会将依赖项添加到编译类路径和 build 输出,并将依赖项导出到其他模块。此配置已废弃(在 AGP 1.0-4.2 中可用)。
providedGradle 只会将依赖项添加到编译类路径(也就是说,不会将其添加到 build 输出)。此配置已废弃(在 AGP 1.0-4.2 中可用)。

结束语

嘿嘿,有帮助就点个赞和关注咯。感谢各位。
西瓜6的啦啦啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据结构基础]排序算法第四弹 -- 归并排序和计数排序

目录 一. 归并排序 1.1 归并排序的实现思想 1.2 归并排序的递归实现 1.2.1 归并排序递归实现的思想 1.2.2 归并排序递归实现的代码 1.3 归并排序的非递归实现 1.3.1 归并排序非递归实现的思想 1.3.2 归并排序非递归实现的代码 1.4 归并排序的时间复杂度分析 二. 计数排…

c++之模板【进阶版】

前言 对于泛型编程,学好模板这节内容是非常有必要的。在前面学习的STL中,由于模板的可重性和扩展性,几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 模板初阶 …

Hugging face教程-使用速查表-快速入门

Hugging face笔记 course url:https://huggingface.co/course/chapter5/8?fwpt 函数详细情况:https://huggingface.co/docs/transformers/main_classes/pipelines#transformers.TokenClassificationPipeline 基础掌握transformers和datasets&#xf…

软件测试 利器 | AppCrawler 自动遍历测试工具实践(一)

本文为霍格沃兹测试学院学院学员课程学习笔记,系统学习交流文末加群。 AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目,通过名字我们大概也能猜出个方向,Crawler 是爬虫的意思,App 的爬虫,遍历 App : 官方 G…

linux性能优化-中断

一、概念 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。Linux将中断处理过程分成了两个阶段:上半部和下半部 (1)上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关…

云计算是什么

📒博客主页: 微笑的段嘉许博客主页 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由微笑的段嘉许原创! 📆51CTO首发时间:🌴2023年2月1日🌴 ✉…

gcc 简介

一、gcc简介gcc与g,当程序中出现using namespace std等带有c特性的语句时,如果用gcc编译时,必须显式地指明这个程序要用c编译库编译,而g可以直接编译。二、gcc支持的文件.c,c语言的源程序.C, c的源程序.cc,…

数据结构——堆的介绍以及应用

前言:对于数据结构而言,大多存在着对应的物理结构和逻辑结构,而我们一开始介绍的顺序表,链表,栈,队列等的物理结构和逻辑结构还是比较类似的。今天要介绍的堆则有所不同,其物理结构是数组&#…

JS前端基于canvas给图片添加水印,并下载带有水印的图片

基于canvas给图片添加水印实现效果图图片添加水印的步骤1.获取图片路径,将图片转换为canvas2.canvas画布上绘制文字水印3.水印绘制完成后,将canvas转换为图片格式4.水印绘制完成后,将canvas下载为图片完整代码总结1、在utils.js 封装添加水印…

POE交换机全方位解读(中)

POE供电距离到底怎么算 只针对符合IEEE802.3af/at 标准PoE设备 ① 网线对供电距离的影响 首先我们先来看下表IEEE802.af和IEEE802.3at标准中对Cat5e网线要求: 说明:Type 1 value和Type 2 value 分别指IEEE802.3af和IEEE802.3at的要求。 从表中可以看出&a…

PCB电路板单面板和双面板的区别和共同点

PCB电路板可以分为单面板、双面板和多面板,我们常用的主要是单面板和双面板,那么单面板和双面板有哪些区别呢?在了解二者区别前,沐渥小编先给大家介绍一下什么是单面板和双面板。 单面板是指单面的线路板,元器件在一面…

如何实现报表集成?(四)——权限集成

在上一篇,我们介绍了报表工具的资源集成,基本知道了报表工具链接、模块、页面和移动端如何实现集成。 这一篇,我们看下如何做权限集成。使用第三方系统的资源权限验证 实际上往往存在多个系统需要统一权限认证,用户要求将某个系统…

PixelLib图像分割

文章目录前言一、PixelLib依赖安装二、实例模型训练前言 图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。 传统的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方…

Mybatis核心原理梳理

文章目录Mybatis的简单使用Mybatis组件名词介绍Mybatis主要工作流程Mybatis如何控制事务Mybatis中事务的生命周期一二级缓存分别如何生效一二级缓存分别如何失效一级缓存的实体可能会被修改Mybatis中的已经存在PooledDataSource连接池为啥还选择Durid等为啥连接close之后被没有…

如何获取 WWDC 视频对应的官方源代码?

零 概览 每年的 WWDC(The Apple Worldwide Developers Conference) 是 Apple 开发者的盛大节日,我们可以从 WWDC 海量官方视频中学到大量的知识。 不过,有些视频仅包含一些“惨不忍睹”(由于网络质量差等原因&#…

【C++】C++ 入门(二)(引用)

目录 一、前言 二、引用 1、引用的概念 2、引用特性 3、使用场景 3.1、做参数 3.2、做返回值 4、传值、传引用效率比较 值和引用作为参数的性能比较 值和引用作为返回值类型的性能比较 5、常引用 6、引用和指针的区别 一、前言 上一篇文章我们讲解了 C 的命名空间…

IDEA快速生成实体类(加注释)

步骤: 1、点击右侧的datesource图标,要是没有该图标,请去自行百度 2、点击 号 3、选择 datasource 4、选择 mysql 1、填写一个连接名,随便填什么都行 2、不用选择,默认就行 3、填写数据库连接的 IP地址,比…

Android 时间工具类

最近总结了一下时间相关的用法,如下。 1、日期转换为字符串 默认"yyyy-MM-dd HH:mm:ss" 2、任意类型日期字符串转时间 3、获取当前对应格式的日期 4、获取当前对应格式的日期 默认"yyyyMMddHHmmssSSS" 5、计算该天是星期几 6、获取星期几…

XSS - 进阶篇(蓝莲花的基本使用)

数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 xss漏洞接收平台-蓝莲花: 1)下载并安装Phpstudy(安…

分享157个ASP源码,总有一款适合您

ASP源码 分享157个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 157个ASP源码下载链接:https://pan.baidu.com/s/1_IF9pFQX4NM-kmJyIAGBQQ?pwdcb55 提取码&#x…