Android AAR 库 - 资源链接失败
Android AAR lib - resource linking failed
我正在尝试将 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
)
我创建了测试项目来通过简单的例子来演示这一点。
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
所以真正的问题是 aar
和 jar
以这种方式创建的不包含它们所依赖的库。如果以这种方式添加库,则需要将其所有依赖项添加到使用它的项目中。
在我的示例中是 implementation 'com.android.support:design:28.0.0'
。
如果项目包含很多这样的依赖项,你应该添加所有的依赖项。但是你仍然可以 运行 解决 "manifest merger failed" 和其他问题。
或者您可以尝试将您的库部署到 maven 或 jitpack,但是您需要正确设置它以确保生成的 pom 文件包含所有需要的依赖项,以便能够轻松地使用这个库。
我正在尝试将 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
)
我创建了测试项目来通过简单的例子来演示这一点。
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
所以真正的问题是 aar
和 jar
以这种方式创建的不包含它们所依赖的库。如果以这种方式添加库,则需要将其所有依赖项添加到使用它的项目中。
在我的示例中是 implementation 'com.android.support:design:28.0.0'
。
如果项目包含很多这样的依赖项,你应该添加所有的依赖项。但是你仍然可以 运行 解决 "manifest merger failed" 和其他问题。
或者您可以尝试将您的库部署到 maven 或 jitpack,但是您需要正确设置它以确保生成的 pom 文件包含所有需要的依赖项,以便能够轻松地使用这个库。