我有一个依赖两个Android库的Android应用程序项目。这两个Android库指定具有相同资源ID的两个资源。在旧的Ant构建系统中,库的优先级是在project.properties文件中指定的,但是在Gradle构建系统中未使用该文件。
尽管“资源合并”文档解释了在构建类型,产品风格,应用程序项目和库项目之间发生冲突的资源的优先级和合并过程,但并没有说明将两个没有共同依赖关系的库合并到一个库中时发生的情况项目。在构建过程的合并过程中,Android Gradle插件如何确定哪个库的资源具有更高的优先级?
嗯,看来Android开发人员文档终于为我们找到了答案。我从https://developer.android.com/studio/projects/android-library#Considerations提取了此内容:
构建工具将库模块中的资源与从属应用程序模块中的资源合并。如果在两个模块中都定义了给定的资源ID,则将使用应用程序中的资源。
如果多个AAR库之间发生冲突,则将使用依赖列表中第一个列出的库中的资源(朝向依赖块的顶部)。
为了避免公共资源ID的资源冲突,请考虑使用模块唯一的(或在所有项目模块中唯一的)前缀或其他一致的命名方案。
我将相关段落加粗了。看起来依赖关系在Gradle依赖关系块中出现的顺序可能会影响构建过程!这是一件需要警惕的小事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句