Type something to search...

20 feb 2024

GsonConverterFactory dependency en Retrofit 2: resolver Cannot resolve symbol

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.0 para ambos, o
  • 2.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

ProblemaCausaSolución
Cannot resolve symbol 'GsonConverterFactory'Falta el artefacto que define la claseAñadir com.squareup.retrofit2:converter-gson con la misma versión que retrofit2:retrofit.
Sigue sin resolverTypo en el grupo (retrofit en vez de retrofit2)Usar com.squareup.retrofit2:converter-gson.
Incompatibilidades en runtimeVersiones distintas de retrofit y converter-gsonAlinear 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 Agent Skills: el estándar abierto que enseña procesos a los agentes de IA

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

09 nov, 2026
Agentes de código en paralelo: por qué Meta ha comprado Conductor Agentes de código en paralelo: por qué Meta ha comprado Conductor

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

09 nov, 2026
IA en tu portátil y en tu móvil: modelos pequeños y on-device en 2026 IA en tu portátil y en tu móvil: modelos pequeños y on-device en 2026

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

09 nov, 2026
¿Listo para empezar?

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.

Solicita tu presupuesto