android开发Execution failed for task ':bundleDebugAar'...Direct local .aar file dependencies are not supported when building an AAR...编译错误解决方法
1. 问题描述
- [ +103 ms] FAILURE: Build failed with an exception.
[ ] * What went wrong:
[ ] Execution failed for task ':jpush_flutter:bundleDebugAar'.
[ ] > Error while evaluating property 'hasLocalAarDeps' of task ':jpush_flutter:bundleDebugAar'.
[ ] > Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). The following direct local .aar file dependencies of the :jpush_flutter project caused this error: D:\work\app\common\plugins\jpush_flutter\android\libs\com.heytap.msp-push-3.1.0.aar
2. 原因分析
implementation files('libs/com.heytap.msp-push-3.1.0.aar') //当前项目子模块这样引入aar包,gradle4.0之后是Android子模块编译是不支持的
- 出现这个编译报错的原因是,编译Android子项目的时候,引入的libs包下的com.heytap.msp-push-3.1.0.aar文件,Android模块编译在gradle4.0之后是不支持本地直接引入aar包的方式使用aar依赖库了,只能通过maven远程依赖的方式引入aar依赖包。
- 注意:我这里说的是子模块直接引入本地aar才有这个问题,主模块这样引入本地aar文件是没有问题的
3. 解决方法
-
解决方法1
-
1.1. 先修改子模块的implementation files('libs/com.heytap.msp-push-3.1.0.aar') 为
compileOnly
,让编译通过先,但是注意:这样是可以编译成功了运行是会报错的
-
1.2. 第一步这样编译通过了,运行报错,因为
compileOnly
只是编译,没有打包进去apk,下面就再拷贝一份到主模块,使用implementation引用进去,这样就可以解决问题了
-
解决方法2
-
2.1. 构建本地仓库maven,这里使用
com.heytap.msp-push-3.1.0.aar
文件作为例子
-
msp-push-3.1.0.pom文件内容如下,主要是指定groupId、artifactId、version等等信息,项目使用的implementation首先是找到这个pom文件的,然后再自动获取同目录下的同名aar文件
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.heytap</groupId>
<artifactId>msp-push</artifactId>
<version>3.1.0</version>
<packaging>aar</packaging>
</project>
- 2.2. 和引用远程仓库一样引入本地仓库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2022-09-30 Android开发性能优化耗时卡顿检测方法以及步骤
2022-09-30 android开发ndk编译出现"undefined reference to xxx"解决方法