Downgrade de API 21 a API 19


#1

Estoy trabajando con una app, cuya configuración de gradle me dice que el API mínima es la 21 y la target el API 26 (Android 5.0.1-Android 8.0.0).

El problema es que yo me quedé en Android 4.4 y no veo previsiones de subir por el momento. Terminaré tirando de emulador para las pruebas de desarrollo, pero la aplicación está en un estado muy avanzado, casi beta, y me gustaría tenerla instalada en mi smartphone para testearla en condiciones. Puedo bajar manualmente el minSdk, pero no estoy seguro de hasta donde afectará esto en cuanto a funcionalidad.

¿A qué riesgos me expongo? Así a groso modo, además de incompatibilidades, que de hecho, me interesa saber qué incompatibilidades exactamente son las que me enfrentaría.

Ya he preguntado al equipo de desarrollo por este tema, pero aún así, tengo dudas que prefiero solventar aquí.


#2

Sin saber mucho (de esto quien sabe son @MiguelAngelLV @jorge_arasthel @vsuarez y @josejuansanchez), imagino que perderás funcionalidad porque las API’s cambian ¿Como solucionarlo? Con un “if” y mirando si el SDK es mayor de o menor de, usar este trozo de código u otro (creo recordar que lo usé cuando programaba para Android 2-5).


#3

Si bajas el minSdk, como dice @klin en principio los problemas que puedes tener son:

  • Tener que usar ifs para según la versión de la API usar unos métodos u otros (deprecaciones o métodos que no existan en APIs antiguas).
  • Problemas de UI si no se usan correctamente las librerías compat y support. Básicamente, que la app se vea fea en APIs viejas.
  • Bugs propios de dispositivos y versiones de Android antiguas - I’m looking at you, Samsung. Esto no quiere decir que en versiones nuevas no haya dispositivos con bugs por culpa de fabricantes que modifican partes clave del OS como les da la gana, pero cuantas más APIs soportas, más te expones.

Por lo general, bajar la versión de la API mínima no es algo muy peligroso. Lo suele ser más subirla, por lo comentado antes y la posible pérdida de usuarios.


#4

Iba a decir cosas… Pero @jorge_arasthel lo ha explicado fantabulosamente bien… Así que…

Como dato, si no has usado «nada de las apis nuevas» quizás puedas bajar la API no tener que tocar nada, o quizás explote todo, es cuestión de probar.


#5

Gracias por las respuestas @klin, @jorge_arasthel y @MiguelAngelLV :smiley:

Me acaba de responder el responsable de la app en cuestión, y parece que no hay ninguna funcionalidad ni librería específica que necesite si o si el API 21, sino que se hizo así por convicción más que otra cosa. Sabiendo que no se corren riesgos serios, y considerando que la versión en producción seguirá siendo Lollipop en adelante, me la voy a jugar.

De hecho, anoche estuve haciendo los primeros tests de usuario en el emulador del SDK con 5.1, y RAM al 85% y más lento que el caballo del malo…


#6

Yo como consejo, y siempre que puedas, desarrolla desde la mínima versión posiblemente usada. El caso en el que yo te digo, aunque había Kitkat ya (4.4), la mayor cuota de mercado la seguía teniendo Gngerbread (2.3), así que siempre partía de ahí hasta el SDK más alto.

Yo me llevé una sorpresa cuando en Android 5 creo, la forma de pedir permisos había cambiado, y el Bluetooth no andaba cuando traté de migrar un proyecto casero de 4.4 a 5. Como dice @MiguelAngelLV, en principio vas a tener más problemas “palante que patrás”.

PD: @jorge_arasthel eres la Biblia del Android, y tu palabra es la ley :stuck_out_tongue_winking_eye:


#7

Lo de los permisos de Android Lollipop ya me ha dado más de un disgusto, si…


#8

Discrepo contigo. Todo depende de hasta que versión minima quieres bajar, muchas de las clases importantes x ejemplo funcionan a partir de la API 14. Por otro lado, ir subiendo no había dado tanto problema, hasta la API 22 con el tema de los permisos y sus corte de las conexiones internas e hilos, el llamado MODO DOZE, que vaya tela!!!


#9