Android AAR lib - 资源链接失败

B-G*_*teR 6 java android gradle android-studio 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.
Run Code Online (Sandbox Code Playgroud)

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

B-G*_*teR 9

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

在我的例子中是这样的implementation 'com.android.support:design:28.0.0'

如果项目包含很多此类依赖项,则应该将它们全部添加。但您仍然可能会遇到“清单合并失败”等问题。

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