微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

封装同一个库的多个APK可能仅在AGP 4.0.1上使用一个动态模块就导致运行时错误?

如何解决封装同一个库的多个APK可能仅在AGP 4.0.1上使用一个动态模块就导致运行时错误?

我的项目中只有一个动态功能模块,称为搜索,但是当我尝试构建项目时,出现该错误

    [:search,:search] all package the same library [androidx.recyclerview:recyclerview].
    
    Multiple APKs packaging the same library can cause runtime errors.
    Placing each of the above libraries in its own dynamic feature and adding that
    feature as a dependency of modules requiring it will resolve this issue.
    Libraries that are always used together can be combined into a single feature
    module to be imported by their dependents. If a library is required by all
    feature modules it can be added to the base module instead.

当然,我要做的第一件事是研究有相同问题的人,然后我发现:

1- This Question 2- This medium article

两者都引入了相同的解决方案(使用Android Gradle Plugin 4.0),而我的项目使用了AGP 4.0.1,但是问题是我只有一个动态模块,称为搜索。我没有任何其他动态模块,甚至我的搜索gradle文件中都没有RecyclerView的依赖项:androidx.recyclerview:recyclerview,所以这可能是可传递的依赖项。

此外,您可以通过以下两种方式之一找到重复的依赖项:

1-导航至:PROJECT_NAME / module_name(在我的情况下:搜索)/ build / intermediates /

然后在该目录中搜索“ deps.txt”文件,打开该文件,您将看到所有模块依赖项直接和传递。

2-运行./gradlew:module_name:dependencies任务

如果您尝试从“ deps.txt”文件删除重复的行:androidx.recyclerview:recyclerview,则在每次构建后都会再次生成它。

话虽如此,我需要在packagingOptions {}中使用一些规则,例如exclude,以防止search.aar与任何其他search.*格式之间的冲突

有人可以帮忙吗?

解决方法

就我而言,我从其中一个模块中删除了以下内容

注意:不是来自基础模块

implementation 'androidx.legacy:legacy-support-v4:1.0.0'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。