Das ist also ein bisschen interessant, ich bin mir nicht sicher, wie genau es in Android Studio einrichten. Ich habe mehrere Module, die einige wiederverwendbare Komponenten haben, die ich in verschiedenen Apps verwende, aber es wäre nett, bestimmte Themen in die wiederverwendbaren Komponenten mit Aromen zu injizieren. Anstatt für jede Komponente, die ich schreibe, einen neuen Geschmack für jede Komponente zu kreieren, dachte ich daran, ein Thema-Modul zu haben, das eine Geschmacksrichtung pro App hat, die ich schreibe, die Farbschemata hat ... usw. Hier ist eine Art, wie ich will sie aufrichtenAndroid Thema Modul mit Aromen
App1: dependencies reusable lib1 reusable lib3 reusable lib4 theme - App1 flavor App2: dependencies reusable lib1 reusable lib2 reusable lib4 theme - App2 flavor
Jetzt würde ich es vorziehen, wenn die wieder verwendbaren Libs einfach auf Thema verlassen können, ohne wissen zu müssen, welcher Geschmack zu bauen, und der Haupt-App proj in seiner Abhängigkeit von Thema könnte den Geschmack für diese App verweisen (mit dieser Antwort https://stackoverflow.com/a/24316133/1316346). Der Grund dafür ist, dass jedes wiederverwendbare Modul keine einzelne Anwendung in seinen build.gradle-Abhängigkeiten haben kann oder andere Apps, die auf sie verweisen, durchbrechen würde. Es ist auch mühsam, jedes wiederverwendbare Modul für jede App, die ich schreibe, zu gestalten. Gibt es eine Möglichkeit, so etwas zu erreichen? Hier ist, was ich versucht:
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')
}
Das Problem dabei ist, Sobald Lib1 versucht, auf irgendetwas im Theme zuzugreifen, wird ein Fehler angezeigt. Tatsächlich erstellt es nicht einmal das erste Thema, es wird versuchen, Lib1 vor Theme zu erstellen, obwohl Lib1 eine Abhängigkeit hat (etwas komisches mit den Aromen). Wenn ich Lib1 zu ändern:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile project(path: ':Theme', configuration: 'app1Release')
}
wird es für app1 arbeiten, aber ich würde haben, entweder es ständig ändern, bevor Sie jede App zu bauen, oder tun viele Aromen für jeden lib würde ich gerne vermeiden. Hat jemand jemals so etwas erreicht?
tl; dr kann ein Modul Referenz ein Aroma eines anderen Moduls auf der Grundlage der von der App gebaut Geschmack Referenzierung das gleiche Modul
Warum verwenden Sie keine tatsächlichen Themen in Ihren Apps? Welche Art von Werten müssen Sie in Ihre Module einbringen? Wenn Sie Themenattribute wie '? ColorPrimary' in Ihren Modulen verwenden, können Sie einfache Schemas ohne Aromastoffe verwenden. Sie können auch benutzerdefinierte Werte für Ihr Thema erstellen. –