To jest trochę interesujące, nie jestem pewien, jak dokładnie skonfigurować go w studiu Android. Mam kilka modułów, które mają kilka komponentów wielokrotnego użytku, których używam w różnych aplikacjach, jednak byłoby miło wprowadzić pewne motywy do komponentów wielokrotnego użytku za pomocą smaków. Zamiast tworzyć nowy smak dla każdego komponentu dla każdej aplikacji, którą piszę, myślałem o 1 module tematycznym, który miałby smak na aplikację, którą piszę, która ma schematy kolorów ... itd. Tutaj jest trochę jak chcę go skonfigurować:Moduł tematyczny Android o smakach
App1: dependencies reusable lib1 reusable lib3 reusable lib4 theme - App1 flavor App2: dependencies reusable lib1 reusable lib2 reusable lib4 theme - App2 flavor
Teraz wolałbym gdyby wielokrotnego libs może po prostu zależy od tematu bez konieczności wiedzieć, jaki smak budować, a główny app proj w to uzależnienie od tematu może odwoływać się do smaku tej aplikacji (używając tej odpowiedzi: https://stackoverflow.com/a/24316133/1316346). Powodem tego jest to, że każdy moduł wielokrotnego użytku nie może mieć jednej aplikacji w zależnościach build.gradle lub złamie inne aplikacje odwołujące się do nich. Nużące jest również tworzenie smaku każdego modułu wielokrotnego użytku dla każdej aplikacji, którą piszę. Czy istnieje sposób na osiągnięcie czegoś takiego? Oto, co starałem:
Apl1 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')
}
Apl2 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')
}
Problem z tym jest tak szybko, jak Lib1 próbuje uzyskać dostęp do czegokolwiek w temacie, pojawia się błąd. W rzeczywistości nawet nie buduje tematu, będzie próbował zbudować Lib1 przed Theme, nawet jeśli Lib1 ma zależność (coś dziwnego w smaku). Jeśli zmienię LIB1 do:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile project(path: ':Theme', configuration: 'app1Release')
}
Będzie pracować dla APP1, ale musiałbym albo stale go zmienić przed budowania każdą aplikację, czy wiele smaków dla każdego lib chciałbym uniknąć. Ktoś kiedykolwiek osiągnął coś takiego?
tl; dr Can odniesienie moduł smak innego modułu w oparciu o smaku zbudowany przez aplikację odsyłania tego samego modułu
Dlaczego nie używasz rzeczywistych motywów w swoich aplikacjach? Jakie wartości musisz przekazać do swoich modułów? Jeśli użyjesz atrybutów motywu, takich jak '? ColorPrimary' w swoich modułach, możesz użyć zwykłego Theming bez smaków, możesz również utworzyć niestandardowe wartości, które będą uwzględnione w twoim temacie. –