java - Android AAR lib - 资源链接失败

标签 java android android-studio gradle 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 不包含它们所依赖的库。如果以这种方式添加库,您需要将其所有依赖项添加到使用它的项目中。

在我的示例中,它是实现“com.android.support:design:28.0.0”

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

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

关于java - Android AAR lib - 资源链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54548134/

相关文章:

java - JdbcTemplate.queryforList() 返回值但 map.get 返回 null

android - 让 ADT Code Assist 像 Xcode 自动完成一样工作

android RadioButton 图片和文字

android - 将 Activity 登录到主要 Activity

java - 安全证书-了解CA在代码签名中的角色

java - 如何访问 java 集合,就像数据库中的表一样,具有索引和类似 LINQ 的查询

android - 为什么我的 facebook android sdk 登录被调用了两次?

java - Android 在 TextView 中显示随机数

java - 如何从 Google Places API 将 PlacePicker 的 map 类型从简单更改为卫星?

java - 无法从 Selenium 中的输入元素获取文本