These are chat archives for rcgonzalezf/desarrollador-movil

27th
May 2016
Luis Cabanillas
@luiscabanillas
May 27 2016 05:35
que onda, pregunta rapida, cuando se usan los productFlavors en Android Studio, si quiero hacer override de una clase java, tengo que poner la misma estructura de folders (e.g. main/java/com.package.app/Clase.java = flavor/java/com.package.app/Clase.java) o solo con que el .java se llame igual?
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 05:36
misma estructura
pero no se puede hacer así
tiene que ser así:
main/java/com.package.app/Clase.java,
flavor/java/com.package.app/OtraClaseOverride.java
flavor2/java/com.package.app/OtraClaseOverride.java
es decir, los que sobreescribes son en otros flavors, no puedes sobreescribir en el main flavor
y el package name(folders) es parte del namespace de la clase, así que no basta con que se llame igual la Clase.java
en C# con partial classes y el namespace separado de la ubicación física sería más fácil
pero en el caso de Java no se maneja así desafortunadamente
si me di a entender?
al final si solo quieres compilar flavor1 pasaría a ser tu main, y flavor2 tu flavor :), en sí es lo mismo solo aumentan unos src folders
Luis Cabanillas
@luiscabanillas
May 27 2016 05:57
aa ok, creaia que si tenias /main/java/.../Clase.java teniendo la clases con el mismo nombre en el mismo path lo sustutia en el build para el flavor..
Gradle combines the source code and resources from these directories to generate the output for a build variant. If different directories contain resources with the same name for a build variant, the priority order is the following: build type resources override those from the product flavor, which override the resources in the main source directory, which override those in any libraries. This allows Gradle to reuse common activities, application logic, and resources across different versions of your app.
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:01
Según esa documentación sí
Vale la pena intentarlo
Pero hace 3 meses eso no era así, es decir si se sobreescriben pero según yo no los de main, tienes que ponerlo en el flavor
Cabe aclarar que resources si se sobreescriben
Esto es todo lo que va en res/ folders
Quizá ahí la confusión
(layouts, styles, colors,...imágenes)
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:07
Las clases de tratan diferente a los resources
Luis Cabanillas
@luiscabanillas
May 27 2016 06:07
ooo, puede ser
voy a ver que onda, porque si da el ejemplo del java folder aqui
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:10
Jejejeje pero los Source folders los trata diferentes
Luis Cabanillas
@luiscabanillas
May 27 2016 06:10
pero si entiendo lo que dices, si no jala, hay que incluir la clase en el flavor y overridear la clase original en esa nueva, en el build del flavor seguiria incluyendo las dos, pero overrideando la primera clase de algun modo se sustituye
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:10
Si he hecho varios con sourcesets
Mira ahí mismo dice:
Note: For a given build variant, Gradle throws a build error if it encounters two or more source set directories that have defined the same Java class. For example, when building a debug APK, you cannot define both src/debug/Utility.java and src/main/Utility.java. This is because Gradle looks at both these directories during the build process and throws a 'duplicate class' error. If you want different versions of Utility.java for different build types, you can have each build type define its own version of the file and not include it in the main/ source set.
En el link que rolaste
Luis Cabanillas
@luiscabanillas
May 27 2016 06:11
got it
entonces el tip que mencionas esta al 100
gracias :D
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:12
Si mientras no lo incluyas en main, todo fino
Luis Cabanillas
@luiscabanillas
May 27 2016 06:12
arre
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:12
Desventaja es que si un flavor no la ocupa
La debes poner vacía o algo jajajaja
Pero no se dice así, se dice: implemente el NullObject Patterns :)
Luis Cabanillas
@luiscabanillas
May 27 2016 06:12
jajajaja
elegancia ante todo
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:13
Si pq sino el main no compila cuando usas el flavor que no la tiene
Si haces referencia en main a la clase
Luis Cabanillas
@luiscabanillas
May 27 2016 06:13
simon
Roberto Carlos Gonzalez Flores
@rcgonzalezf
May 27 2016 06:13
He hecho otros trucos como interfaces, e implementación en flavor
Más estilo fsctory, y de hecho no queda mal el código :)
Saludos
Luis Cabanillas
@luiscabanillas
May 27 2016 06:14
sale, muchas gracias