Mam stosunkowo skomplikowany projekt, który wymaga dwóch wymiarów smakowych dla każdej aplikacji. Mam przepisany go znacznie prościej w poniższym przykładzie:Gradle: Aplikacja o wielowymiarowym smaku ApplicationId
flavorDimensions "shape", "color"
productFlavors {
blue {
flavorDimension "color"
}
red {
flavorDimension "color"
}
green {
flavorDimension "color"
}
square {
flavorDimension "shape"
}
circle {
flavorDimension "shape"
}
Chcę móc ustawić inny applicationId dla każdego wariantu, np squareblue miałoby inny applicationId do circleblue. Nie mogę ustawić elementu applicationId w wymiarze koloru, ponieważ byłby taki sam dla każdego kształtu. W powyższym przykładzie potrzebowałbym 6 różnych identyfikatorów aplikacji. Te identyfikatory również nie podążają za żadnym wzorem, mogą być dowolne.
Widziałem odpowiedź tutaj: How to set different applicationId for each flavor combination using flavorDimensions?, ale to oznaczałoby, muszę ustawić ręcznie, co nie jest możliwe do mojego projektu, ze względu na liczbę wariantów (1000).
Co naprawdę chcę zrobić, to ustawić dwa applicationids na wymiarze koloru, a następnie wybiera właściwy, w zależności od wymiaru kształtu, kiedy jest zbudowany. Próbowałem definiować zmienne, ale nie odniosłem żadnego sukcesu, po prostu zostają nadpisane przez ostatni wariant.
Pliki kompilacji są napisane w Turing-kompletnego języku, więc masz potencjał, aby zrobić całkiem sporo. Nie możesz oprzeć się na kodzie w tym pytaniu, z którym się łączyłeś i dodać własną logikę do generowania identyfikatorów aplikacji? –
Identyfikatory ApplicationID są już istniejące i mogą być dowolne, więc nie ma logicznego sposobu ich tworzenia. Mogłabym dodać każdą z nich w wariancieFilter, ale wymagałoby to dodania tysięcy dodatkowych linii do mojego pliku gradle, aby sprawdzić każdy wariant. –
Jeśli nie ma logicznego sposobu ich tworzenia, nie jestem pewien, jaka jest rozsądna alternatywa - musisz gdzieś je zakodować. Możesz prawdopodobnie zapisać je w pliku tekstowym CSV i napisać kod w pliku kompilacji, aby odczytać go na mapie i zastosować. –