问题

android 在升级 gradle 后,之前引进 aar 包的方法发生了改变,打包的时分会报错。报错信息大约如下:

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 :commonlib project caused this error: /Users/projectName/libs/staticip.aar

这儿记录一下处理的过程。

环境

我这边项目使用的环境信息大约如下:

Android Studio Flamingo | 2022.2.1
Build #AI-222.4459.24.2221.9862592, built on March 31, 2023
Runtime version: 17.0.6+0-17.0.6b802.4-9586694 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 13.3.1
GC: G1 Young Generation, G1 Old Generation
Memory: 3072M
Cores: 8
Metal Rendering is ON
Registry:
    editor.focus.mode.color.light=415967
    ide.editor.tab.selection.animation=true
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
    ide.new.editor.tabs.vertical.borders=true
    ide.balloon.shadow.size=0
    editor.focus.mode.color.dark=415967
    gradle.version.catalogs.dynamic.support=true
Non-Bundled Plugins:
    idea.plugin.protoeditor (222.4459.16)
    com.intellij.marketplace (222.4459.28)
    com.mallowigi (80.1.0)
    com.chrisrm.idea.MaterialThemeUI (7.14.2)
  • gradle 版本:
classpath 'com.android.tools.build:gradle:7.4.2'
  • aar 库引进方法:通过直接将 aar 包放到 libs 目录的方法引进。

处理步骤

1. 新建本地库目录

切换到 project 形式:

Android 升级 gradle 后引入的 aar 包报错

在项目根目录右键新建文件夹,名字随意,我这儿设置为:LocalRepo

Android 升级 gradle 后引入的 aar 包报错

2. 新建 aar 模块

  1. LocalRepo 目录中新建新文件夹,用于寄存 aar 模块,我这儿取名为:staticip

  2. 将你原来在 libs 中的 aar 库剪切到 LocalRepo 目录下。

  3. LocalRepo 目录中新建 build.gradle 文件,填入如下内容:

configurations.maybeCreate("default")
artifacts.add("default", file("staticip.aar"))

记得将 staticip.aar 替换为你自己的 arr 库名。

最后的目录结构如下:

Android 升级 gradle 后引入的 aar 包报错

3. 导入模块

修改 settings.gradle,加入如下内容:

include ':LocalRepo:staticip'

4. 引进模块

在你之前要引进这个 arr 库的模块中,修改它的 build.gradle 文件:

dependencies {
    implementation project(':LocalRepo:staticip')
}

5. 同步项目

最后别忘了 sync 一下:

Android 升级 gradle 后引入的 aar 包报错

总结

简单来讲,这个过错便是新版的 gradle 不支持直接导入 aar 库造成的,通过将 aar 库包装为模块的方法引进可以处理该问题。

❤️ 支持

如果本文对你有协助,点赞 支持下我吧,你的「赞」是我创作的动力。