Android AAR库-资源链接失败



我正在尝试将Android应用程序转换为lib模块,而不复制源代码。我做了(修改了build.gradle文件),它同步并构建,但当我将对生成的AAR文件的依赖项添加到另一个项目(我想使用这个库的地方)中时,构建失败,资源链接也失败。

我不明白为什么:

  • 原始应用程序构建并运行

  • 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.

所以它说没有找到资源,并指向我在该库中使用的依赖项(在本例中是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

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

在我的示例中,它是implementation 'com.android.support:design:28.0.0'

若项目包含很多这样的依赖项,那个么您应该添加所有这些依赖项。但你仍然可能遇到"明显合并失败"等问题。

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

最新更新