20 feb 2024
GsonConverterFactory dependency en Retrofit 2: resolver Cannot resolve symbol
Si estás integrando Retrofit en una app Android y el IDE marca Cannot resolve symbol en GsonConverterFactory, el fallo suele venir de una dependencia faltante o de un cambio de artefacto entre versiones. En este artículo explicamos por qué ocurre y cómo solucionarlo con la GsonConverterFactory dependency correcta.
Breve contexto: qué es Retrofit
Retrofit (Square/Now OkHttp) es una librería tipo REST client para Java y Kotlin: defines una interfaz con anotaciones (@GET, @POST, @Path, etc.) y Retrofit genera la implementación que hace las peticiones HTTP. Se apoya en OkHttp para el transporte y, opcionalmente, en converters para serializar/deserializar el cuerpo de las peticiones (por ejemplo JSON ↔ objetos con Gson).
En Retrofit 1.x, Gson venía integrado de forma implícita. A partir de Retrofit 2, los converters se externalizaron: el core solo define la interfaz (Converter.Factory); la conversión JSON con Gson se hace con un artefacto aparte, converter-gson. Si no lo añades, la clase GsonConverterFactory no existe en el classpath y aparece el error Cannot resolve symbol.
El error: Cannot resolve symbol ‘GsonConverterFactory’
Suele aparecer en código como este:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) // Cannot resolve symbol
.build();
O en Kotlin:
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) // Cannot resolve symbol
.build()
Causa: En Retrofit 2, GsonConverterFactory no forma parte del artefacto retrofit; está en el artefacto retrofit2:converter-gson. Sin esa dependencia, el compilador no encuentra la clase.
Solución: añadir la dependencia converter-gson
Hay que declarar en build.gradle (módulo app) dos dependencias: el cliente Retrofit y el converter Gson. Usa la misma versión en ambos para evitar incompatibilidades.
Gradle (Groovy) — build.gradle o build.gradle.kts equivalente
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
En versiones recientes de Android Gradle Plugin se usa implementation (no compile, obsoleto). Si tu proyecto aún usa compile, el comportamiento es el mismo para este caso; migrar a implementation es recomendable.
Versiones alineadas
Es importante que retrofit y converter-gson compartan versión. Por ejemplo:
2.9.0para ambos, o2.11.0(o la estable más reciente que uses).
Si usas una variable para no repetir:
def retrofitVersion = "2.9.0"
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
Import en código
Con la dependencia añadida y un Sync Project with Gradle Files, el import debe resolverse:
import retrofit2.converter.gson.GsonConverterFactory;
En Kotlin:
import retrofit2.converter.gson.GsonConverterFactory
Detalle importante: grupo retrofit vs retrofit2
En versiones beta de Retrofit 2 el grupo era com.squareup.retrofit y el artefacto com.squareup.retrofit:converter-gson. En la versión estable pasó a com.squareup.retrofit2:
- Incorrecto (antiguo o typo):
com.squareup.retrofit:converter-gson:2.0.0-beta4 - Correcto:
com.squareup.retrofit2:converter-gson:2.0.0-beta4(o 2.x.x estable).
Un error típico es dejar retrofit en el converter y retrofit2 en el core; en ese caso el símbolo sigue sin resolverse. Verifica que ambos artefactos sean retrofit2.
Ejemplo mínimo completo
build.gradle (app):
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
Servicio y uso:
public interface ApiService {
@GET("users/{id}")
Call<User> getUser(@Path("id") long id);
}
// Construcción del cliente
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.ejemplo.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService api = retrofit.create(ApiService.class);
No es necesario añadir Gson como dependencia aparte para usar GsonConverterFactory: converter-gson ya trae la dependencia transitiva de Gson. Si quieres una versión concreta de Gson, puedes declararla explícitamente.
Resumen
| Problema | Causa | Solución |
|---|---|---|
Cannot resolve symbol 'GsonConverterFactory' | Falta el artefacto que define la clase | Añadir com.squareup.retrofit2:converter-gson con la misma versión que retrofit2:retrofit. |
| Sigue sin resolver | Typo en el grupo (retrofit en vez de retrofit2) | Usar com.squareup.retrofit2:converter-gson. |
| Incompatibilidades en runtime | Versiones distintas de retrofit y converter-gson | Alinear versiones (p. ej. 2.9.0 para ambos). |
La GsonConverterFactory dependency correcta en proyectos actuales es com.squareup.retrofit2:converter-gson con versión alineada a tu Retrofit. Tras añadirla y sincronizar Gradle, el error Cannot resolve symbol debería desaparecer.
Para más casos y discusión en comunidad, puedes revisar el hilo en Stack Overflow: Retrofit 2 example tutorial but GsonConverterFactory display error “Cannot resolve symbol”.
Artículos relacionados
Ver todo el blog
Agent Skills: el estándar abierto que enseña procesos a los agentes de IA
En resumen: una Agent Skill es una carpeta con instrucciones, scripts y recursos que un agente de IA carga solo cuando la necesita
Agentes de código en paralelo: por qué Meta ha comprado Conductor
En resumen: la tendencia de la semana en desarrollo con IA no es un modelo nuevo, sino trabajar con *varios agentes de código a la vez
IA en tu portátil y en tu móvil: modelos pequeños y on-device en 2026
En resumen: durante años, "usar IA" significaba mandar tus datos a un servidor. Esa idea está cambiando. En noviembre de 2026 hay ejempl
Del concepto al impacto de negocio
No solo construimos tecnología. Construimos productos digitales que funcionan, se posicionan, se adoptan y crecen. Relación continua con visión de crecimiento.