Android AAR库-资源链接失败

时间:2019-02-06 06:55:13

标签: java android android-studio gradle aar

我正在尝试将Android应用转换为lib模块,而不复制源代码。 我做到了(修改了build.gradle文件),它进行了同步和构建,但是当我将对生成的AAR文件的依赖关系添加到另一个项目(我要使用此lib的项目)中时,构建失败并且资源链接失败。

我不明白为什么:

  • 原始应用会生成并运行

  • lib模块(从应用程序转换而来)构建

  • 使用该库中的AAR的
  • 项目无法生成,并在此AAR中发现错误。

例如,可能的错误之一是:

Android resource linking failed
error: resource style/TextAppearance.Design.Tab (aka bv.dev.aarlibtester:style/TextAppearance.Design.Tab) not found.
error: failed linking references.

因此它表示未找到资源,并指向我在该lib中使用的依赖项(在本示例中为design

我创建了测试项目,以在简单的示例上对此进行演示。

Github

  • aar-res-app是使用design依赖项的简单应用程序项目

  • aar-res-lib是从此项目创建的库(已转换)

  • aar-res-lib-tester是使用该库的简单应用程序项目。


当前,我重命名了库包以使其与应用程序包不匹配,并使用jar而不是aar

我使用Gradle -> root -> Tasks -> Other -> createFullJarRelease创建它。

结果在Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar

1 个答案:

答案 0 :(得分:1)

真正的问题是,以这种方式创建的aarjar不包含它们所依赖的库。如果以这种方式添加库,则需要将其所有依赖项添加到使用它的项目中。

在我的示例中为implementation 'com.android.support:design:28.0.0'

如果项目包含大量此类依赖项,则应添加所有这些依赖项。但是您仍然可以遇到“清单合并失败”之类的问题。

或者您可以尝试将lib部署到maven或jitpack,但是您需要正确设置它,以确保将生成具有所有必需依赖项的pom文件,以便能够轻松使用此库。