【发布时间】:2015-09-25 11:51:27
【问题描述】:
所以这有点有趣,我不确定如何在 android studio 中进行设置。我有几个模块,其中包含一些我在各种应用程序中使用的可重用组件,但是使用风味将某些主题注入到可重用组件中会很好。我没有为我编写的每个应用程序的每个组件创建一个新的风格,而是考虑拥有 1 个主题模块,这将对我编写的每个应用程序都有一个风格,具有配色方案......等等。这是我想要的设置方式:
App1:依赖项 可重用的lib1 可重用的 lib3 可重用的lib4 主题 - App1 风味 App2:依赖项 可重用的lib1 可重用的lib2 可重用的lib4 主题 - App2 风味现在我希望可重用库可以简单地依赖于主题而不需要知道要构建哪种风格,并且它依赖于主题的主应用程序项目可以引用该应用程序的风格(使用这个答案https://stackoverflow.com/a/24316133/1316346) .这样做的原因是每个可重用模块的 build.gradle 依赖项中不能有单个应用程序,否则会破坏引用它们的其他应用程序。必须为我编写的每个应用程序制作每个可重用模块的风格也很乏味。有没有办法实现这样的目标?这是我尝试过的:
App1 build.gradle:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile project(path: ':Theme', configuration: 'app1Release')
compile project(':Lib1')
compile project(':Lib2')
compile project(':Lib4')
}
App2 build.gradle:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile project(path: ':Theme', configuration: 'app2Release')
compile project(':Lib1')
compile project(':Lib3')
compile project(':Lib4')
}
Lib1 build.gradle:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile project(path: ':Theme')
}
问题在于,一旦 Lib1 尝试访问主题中的任何内容,就会出错。事实上,它甚至不会先构建主题,它会尝试在主题之前构建 Lib1,即使 Lib1 具有依赖项(味道有点奇怪)。如果我将 Lib1 更改为:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile project(path: ':Theme', configuration: 'app1Release')
}
它适用于 app1,但我必须在构建每个应用程序之前不断更改它,或者为我想避免的每个库做很多风格。有没有人实现过这样的目标?
tl;dr 一个模块能否根据引用同一模块的应用构建的风格来引用另一个模块的风格
【问题讨论】:
-
为什么不在应用中使用实际的主题?您需要将什么样的值传递到您的模块中?如果您在模块中使用
?colorPrimary之类的主题属性,则可以使用没有风格的普通主题,您还可以创建自定义值以包含到您的主题中
标签: android android-studio gradle android-productflavors