Sabor del producto: Clase duplicada encontrada
Tengo una pregunta muy estúpida, pero estoy sentado aquí frente a mi aplicación desde horas, pero no puedo entender cuál es el problema.
Tengo una aplicación para Android (escrita en kotlin) y quiero hacer dos sabores de producto y anular una clase / archivo en el sabor del producto:
- Corotinas de Kotlin de la manera correcta en Android
- Kotlin: safe lambdas (no hay fugas de memoria)?
- Intentos en Kotlin
- Kotlin en Android: asigna un cursor a una lista
- Android Studio 3 no puede crear mi proyecto
Así que mi gradle script es que:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { ... productFlavors { foo { applicationId "com.foo" } } }
Mis archivos están estructurados de la siguiente manera:
- src - androidTest - foo - java - com - example - Bar.kt - main - java - com - example - Bar.kt - test
Así que básicamente me gustaría anular el archivo Bar.kt
en el sabor del producto foo
, pero de alguna manera no funciona: Dice que la barra de clases está duplicada.
¿Alguna pista?
- Leer CSV línea por línea en Kotlin
- Android Studio 3.0 Canary 1: Las pruebas de Kotlin o las pruebas de Java referentes a las clases de Kotlin fallan
- Kotlin-android: enlace de datos de referencia no resuelto
- NoSuchMethodError: java.lang.Long.hashCode
- Convertir el proyecto de Android para utilizar Gradle Script Kotlin
- Gradle dependencia entre tareas
- Kotlin y Dagger2
- ¿Deberían los archivos de Kotlin ser puestos en un directorio de fuentes separado en Android?
La documentación para variantes estados (énfasis mío):
Nota: Para una variante de construcción dada, Gradle lanza un error de compilación si encuentra dos o más directorios de conjuntos de fuentes que han definido la misma clase Java. Por ejemplo, al crear un APK de depuración, no puede definir src / debug / Utility.java y src / main / Utility.java. Esto se debe a que Gradle examina estos dos directorios durante el proceso de compilación y genera un error de "clase duplicada" . Si desea diferentes versiones de Utility.java para diferentes tipos de compilación, puede tener cada tipo de compilación para definir su propia versión del archivo y no incluirla en el conjunto main / source .
Así que la solución es tener su propia versión de Bar.kt
por variante y excluirla del conjunto de fuentes principales.