gpt4 book ai didi

android - 在 Android gradle 构建中强制执行库的优先级

转载 作者:行者123 更新时间:2023-11-29 00:06:20 25 4
gpt4 key购买 nike

我在一个框架上工作,该框架作为一组 .aar 交付给客户文件,然后将其包含到他们的项目中,如下所示:

...
+-- assets
+-- libs
+-- framework-module1.aar
+-- framework-module2.aar
+-- framework-module3.aar
+-- customer.aar
+-- main
...

该框架由许多对所有客户通用的模块和一个 customer.aar 组成。它提供客户特定的代码和配置。这个想法是 customer.aar 中的代码/资源根据客户的需要覆盖默认代码/资源。

问题是:当最终的.apk是构建的,有时值是自定义的(如预期的那样),但有时它们仍然是默认值。我猜,.aars 的顺序那个时候被组装是不正确的。

构建工具的文档中提到了库优先级,但它们仅与基于 Eclipse 的旧构建系统相关,与基于 Gradle 的构建系统无关。

这是我的 build.gradle文件:

...
repositories {
flatDir {
dirs file('libs')
}
}

dependencies {
compile(name:'framework-module1', ext:'aar')
compile(name:'framework-module2', ext:'aar')
compile(name:'framework-module3', ext:'aar')

compile(name:'customer', ext:'aar')
}
...

有什么方法可以告诉 Gradle customer.aar必须始终在构建中排在最后?

最佳答案

资源由 Android 构建工具按照与 Gradle 脚本中声明的顺序相反的顺序处理。负责订单的代码是found here ,如果您有疑问。

仅交换一行就解决了问题:

dependencies {
compile(name:'customer', ext:'aar')

compile(name:'framework-module1', ext:'aar')
compile(name:'framework-module2', ext:'aar')
compile(name:'framework-module3', ext:'aar')
}

请记住在更改依赖项顺序后清理您的构建! Gradle 不会自动检测它。

请注意,此“相反”顺序仅适用于资源来自 android 库的情况,即当依赖项是 aar 文件时。如果依赖项是另一个项目或模块,则正常(不可逆)顺序有效。

关于android - 在 Android gradle 构建中强制执行库的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33557282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com