【问题标题】:Create Android library that uses AAR file as dependency创建使用 AAR 文件作为依赖项的 Android 库
【发布时间】:2021-04-14 14:16:42
【问题描述】:

我想将 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.** { *; }

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

【问题讨论】:

标签: android gradle sdk aar


【解决方案1】:

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

我能够找到这个链接https://www.programmersought.com/article/63808911660/,并给出了一个对我有很大帮助的答案,它为我提供了编译 aar 的解决方案,还允许我将它的类导入我的 android 库中。

剪短-

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

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

【讨论】:

  • 感谢您的回答。我将 AAR 依赖提取为模块(在第二张图片中),像 Maven 存储库一样上传到 S3,并在我的项目中用作远程依赖。
【解决方案2】:

尝试将这个字符串放入 build.gradle:app 文件中的依赖项:

api fileTree(dir: 'libs', include: ['*.aar'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2016-07-10
    相关资源
    最近更新 更多