创建使用 AAR 文件作为依赖项的 Android 库

Mir*_*dze 5 sdk android gradle aar

我想将 android 库构建为 AAR 文件,其中包含输出 AAR 文件中的依赖项。它使用另一个 AAR 文件作为 libs 文件夹中的依赖项。

在此输入图像描述

构建库显示此错误:

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.

我尝试将 AAR 文件提取为模块 在此输入图像描述

然后将其导入为项目 在此输入图像描述

构建命令有效,但它不包含classes.jar中的外部库 在此输入图像描述

我的 proguard-rules.pro 文件是

-dontwarn javax.annotation.Nullable
-dontwarn com.facetec.sdk.**
-keep class com.facetec.sdk.** { *; }
Run Code Online (Sandbox Code Playgroud)

我还尝试使用https://github.com/kezong/fat-aar-android库并导入facetec-sdk模块作为嵌入项目,但构建命令显示 lint 错误

在此输入图像描述

小智 3

我在尝试创建一个依赖于以 .aar 格式交付给我的 SDK 的 Android 库时遇到了类似的问题。使用较新的 AGP(Android Gradle 插件)4+,不允许在我正在创建的 android 库中编译 aar - 向我显示此错误: “为库模块创建 AAR 时不支持直接本地 .aar 文件依赖项图书馆模块..”

我能够找到此链接https://www.programmersought.com/article/63808911660/,其答案对我有很大帮助,这为我提供了编译 aar 的解决方案,并且还允许我将其类导入到我的安卓库。

剪短——

  1. 创建libs文件夹,并将/name/.arr文件添加到libs文件夹中。
  2. 在项目的 build.gradle 文件中,在 allprojects 范围下,在存储库范围下,添加
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    } 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在应用程序的 build.gradle 下的依赖范围添加
api(name: '/name/', ext: 'aar')
Run Code Online (Sandbox Code Playgroud)

目前它可以工作,我希望以后不会出现任何问题,但是 AS 发出警告,避免使用 flatDirs。但我在这个问题上浪费了太多时间,如果有人有更多的见解,我将很乐意收到。