24 votos

¿Por qué las aplicaciones dejan de ser compatibles con versiones antiguas de Android después de algún tiempo?

Mi madre tenía una aplicación de compras en su antiguo smartphone que funciona con Android v6. Hace poco me di cuenta de que la aplicación en su teléfono ya no era compatible. He visto que este tipo de cosas suceden en los teléfonos antiguos generalmente con muchas aplicaciones. Sólo quería saber por qué las empresas dejan de dar soporte a las versiones antiguas del sistema operativo después de unos años. ¿Les cuesta mucho seguir dando soporte a las versiones más antiguas del sistema operativo? ¿Requiere la contratación de todo un equipo para seguir gestionando el soporte de los sistemas operativos más antiguos? Sólo por curiosidad. Gracias.

0 votos

Usted puede instalar la versión antigua de la aplicación desde el espejo apk

12 votos

"¿Les cuesta mucho continuar con el apoyo a las versiones anteriores del sistema operativo también?" - Sí, cuesta dinero. El desarrollador ha decidido que su base de usuarios de Android v6 es tan pequeña que dejar de dar soporte no afectaría a sus estadísticas de uso de forma notable.

1 votos

¿Podría usted considerar esto al revés, y considerar cuánto esfuerzo debe hacerse para que las nuevas versiones de Android sean compatibles con las aplicaciones antiguas?

31voto

pr0nin Puntos 353

Hay dos formas de dar soporte a las versiones antiguas de Android:

  1. Construir una aplicación que haga uso de los parches de compatibilidad para soportar versiones antiguas de Android (hasta una versión específica) pero que también soporte todas las versiones modernas de Android.

  2. Construir dos o más aplicaciones cada una para un conjunto de versiones de Android.

La segunda opción es, por supuesto, muy costosa, ya que hay que desarrollar y mantener cada versión de la aplicación de forma independiente (o al menos grandes partes de la aplicación). Esta forma no suele utilizarse o sólo si la aplicación se ha reescrito completamente para los nuevos dispositivos y para los dispositivos antiguos se mantiene la versión antigua con un soporte mínimo o nulo.

Por lo tanto, la forma común es la opción 1: una aplicación que tiene todas las correcciones de compatibilidad incluidas. El principal problema es que las nuevas versiones de Android incluyen nuevas e interesantes características que no están (totalmente) disponibles utilizando el sistema de compatibilidad que proporciona Google. Por lo tanto, si quieres hacer uso de ellas y la funcionalidad no es opcional en tu aplicación, los desarrolladores de aplicaciones pueden decidir abandonar la compatibilidad de las versiones más antiguas de Android en favor de poder utilizar las nuevas características de las nuevas versiones de Android. Disminuir el número de versiones de Android soportadas simplifica la aplicación, ya que las antiguas soluciones pueden ser eliminadas y no tienen que ser mantenidas. Y, por supuesto, elimina la necesidad de probar la aplicación en esos dispositivos antiguos, lo que puede ser un problema si quieres probar tu aplicación en dispositivos físicos (no en emuladores), ya que los dispositivos antiguos se rompen y son cada vez más difíciles de conseguir.

16 votos

Además, Soporte de cualquier cosa tiene costes. Si he creado una nueva aplicación y sale una nueva versión de Android, ahora tengo que hacer pruebas para asegurarme de que la aplicación (y cualquier cambio que haga) funciona en las dos versiones. Cuando sale una tercera versión, tengo que hacer pruebas en tres versiones, y así sucesivamente. Si digo que doy soporte a una versión anterior, pero no doy soporte activo a esa versión antigua y los usuarios de la versión antigua notan un error, me darán una paliza en las críticas. Simplemente cuesta más dar soporte a más versiones.

3 votos

Además, si no puedes admitir nuevas funciones en plataformas más antiguas, recibirás críticas de personas que no pueden disfrutar de esas nuevas funciones. Incluso pueden quejarse en las reseñas de su ausencia.

0 votos

Opción 3: Proporcionar implementaciones paralelas dentro de la aplicación para las características que requieren APIs que no están disponibles en la versión de Android más antigua soportada o que han quedado obsoletas en las nuevas versiones de Android. Otro punto es que para soportar activamente las versiones antiguas de Android, se necesita una colección de teléfonos antiguos. Si no los tienes ya o se rompen, comprarlos va a ser difícil.

6voto

computercarguy Puntos 101

El SDK (kit de desarrollo de software) de Android establece una versión mínima de Android que admite, como se explica en otra pregunta y respuesta:

https://stackoverflow.com/q/24441178/1836461

https://stackoverflow.com/a/61087797/1836461

Los desarrolladores/empresas (a los que nos referiremos como "desarrolladores" a partir de ahora) pueden optar por dar soporte a una versión más antigua, pero resulta difícil mantener ese código. Hablando como desarrollador, puede ser difícil recordar qué ajustes o comandos significan para las diferentes versiones de un sistema operativo. Algunas de estas diferencias son incluso obsoletas (desaprobadas) o completamente eliminadas de los nuevos SDKs, lo que hace difícil o imposible mantener la compatibilidad hacia atrás. Y a veces se eliminan por buenas razones, lo que suele significar que tienen importantes problemas de seguridad.

Y el hecho de que la aplicación haya caído, no significa que no haya una versión más nueva disponible. Algunas empresas pueden reescribir su software por completo (por diversas razones, como deshacerse de grandes cantidades de código heredado innecesario), y luego publicarlo como una aplicación independiente, dejando la versión anterior disponible como su idea de compatibilidad hacia atrás.

De hecho, la mayor parte del desarrollo de software no móvil se hace así. La versión antigua sigue estando disponible en algún lugar cuando se lanza una nueva versión. Las tiendas de móviles como Google y Apple no tienen una forma fácil de que un usuario obtenga versiones antiguas, aunque el desarrollador pueda seguir viendo esas versiones antiguas.

Otros motivos

Una empresa también puede decidir que su método de comunicación (protocolos) necesita actualizarse a especificaciones más nuevas que no están disponibles en las versiones antiguas del SDK. Si tienes una aplicación escrita en un SDK antiguo que funciona con teléfonos antiguos, pero necesitas/decides actualizar esos protocolos a una versión de seguridad que la versión antigua no admite, es posible que tengas que eliminar parte de la compatibilidad con versiones anteriores para acceder a los nuevos estándares en un SDK más reciente. Y si vas a reescribir completamente una aplicación, tiene más sentido hacerlo en el último SDK, en lugar de uno que estará completamente obsoleto de nuevo en 1-2 años.

Incluso si se trata de reescribir una aplicación para limpiarla, eliminar funcionalidades innecesarias, rehacer la interfaz de usuario/experiencia de usuario (UI/UX), o por otras 100 razones, utilizar el SDK más reciente también tiene mucho sentido.

La Respuesta que he enlazado más arriba habla de que el 25% de los usuarios de Twitter son ignorados por los cambios en la plataforma debido a una actualización de la app. Pues bien, ese 25% son los teléfonos más antiguos que probablemente serán el grupo de teléfonos que más rápido se reduzca. Al final se romperán, se caerán, se arruinará la batería sin que haya recambios disponibles, o un millar de razones más, incluyendo que otras apps dejen de darles soporte. No digo que sea un buen movimiento eliminar a tantos usuarios del uso de tu aplicación de una sola vez, pero evidentemente pensaron que podrían sobrevivir a ello.

Ejemplo paralelo

En el mercado de los navegadores de escritorio, Chrome es el gran líder en uso.

https://netmarketshare.com/browser-market-share.aspx

https://en.wikipedia.org/wiki/Usage_share_of_web_browsers

A medida que Internet Explorer (IE), Edge, Gecko, Firefox, Safari y otros han caído en desuso, los desarrolladores dejan de hacer tanta compatibilidad entre navegadores. Como alguien que ha hecho eso también, es un total PITA, especialmente cuando un requisito es la compatibilidad perfecta de píxeles, que es casi imposible. Tengo 5 navegadores instalados por esta razón, pero sólo uso 1 para navegar.

Algunas empresas insistirán en dar soporte a IE y Edge, porque "está instalado por defecto en los ordenadores y la mayoría de nuestros usuarios no saben instalar otra cosa". No importa que poca gente use realmente IE o Edge, porque "las estadísticas se toman de sitios donde la mayoría de los usuarios son devs o usuarios de ordenadores de alto nivel". Pero la realidad es que la mayoría de los navegadores no valen la pena el tiempo de soporte. La gente ya no da soporte a Netscape Navigator, incluso si hay alguien que todavía ejecuta Win 3.11 for Workgroups, Win 98SE, o Mac OS 8.5.

Conclusión:

Lo que digo es que en algún momento hay que poner un límite a lo que se va a soportar, ya que las versiones antiguas dejan de ser útiles o utilizables tanto por el usuario como por el desarrollador.

Gastar tiempo, dinero y esfuerzo en versiones antiguas que no se utilizan mucho no suele ser un buen uso de los recursos.

A veces esto es estrictamente un ideal de "ganar más dinero", en el sentido de que el desarrollador quiere obligarte a comprar la nueva versión, pero no siempre es así. Para los desarrolladores tiene más sentido dedicar más tiempo a las nuevas funciones y a los fallos relevantes de una nueva versión que a las nuevas funciones y a los fallos de la versión antigua.

1 votos

Creo que tu ejemplo del navegador es demasiado extremo. Netscape no está soportado porque su EOL fue en 2008. Edge/FF/Safari/etc todavía se desarrollan activamente. Según tu primer enlace, Edge tiene una cuota de mercado del 11,4% (y una tendencia constante al alza). Firefox tiene un 6,5%. Eso sigue siendo bastante significativo. Chrome tiene el 68%, así que si sólo apoyas a Chrome, excluyes al 32% de los usuarios. Tu segundo enlace tiene porcentajes muy diferentes (safari sube a un significativo 19%), pero muestra el mismo problema (apoyar sólo a Chrome excluye al 37% de los usuarios).

0 votos

Volviendo a Android, sólo dar soporte a Chrome sería como sólo dar soporte por encima de Oreo. Oreo aún no es EOL y tiene una cuota de mercado superior al 15%. Decidir no soportarlo sería una decisión extraña que, en mi opinión, justifica el cuestionamiento de por qué es así. Marshmallow (ejemplo de OPs) también sigue teniendo un uso significativo (alrededor del 6%), pero fue EOL en 2017. No tener actualizaciones de seguridad durante más de 3 años sería, en mi opinión, un buen ejemplo de una razón válida para dejar de dar soporte.

0 votos

Incluso apoyado las aplicaciones no siempre funcionan como deberían

2voto

Brian Drake Puntos 121

Las otras respuestas son estupendas y responden directamente a la pregunta; intentemos un enfoque ligeramente diferente.

En primer lugar, ¿por qué la gente sigue teniendo teléfonos con versiones tan antiguas de Android? Normalmente es porque sus fabricantes ya no dan soporte a esos modelos . ¿Por qué no? Seguramente parte de la razón es que los desarrolladores de Android ya no dan soporte a las versiones antiguas de Android .

Así que no sólo es intrínsecamente costoso desarrollar aplicaciones para versiones antiguas de Android, dichos desarrolladores tendrían que soportar una plataforma llena de errores conocidos que definitivamente no se arreglarán . ¿Quién quiere hacer eso?

Tal vez los desarrolladores lo soporten durante un tiempo, si sus usuarios lo exigen. Pero cuando ya no hay muchos usuarios que utilicen una versión antigua de Android, es probable que se abandone.

Las cuestiones tratadas aquí y en las otras respuestas también explican por qué algunos sitios web sólo son compatibles con las "últimas versiones" de los principales navegadores.

2voto

Tobias Puntos 311

Hay más dinero en obligar a los usuarios a actualizarse a las nuevas versiones de Android, lo que a su vez requiere comprar nuevo hardware para ejecutar la nueva versión de Android.

Para que esto ocurra, los desarrolladores de Android cambian las API de programación poco a poco a medida que salen nuevas versiones. Con el tiempo se añaden nuevas formas de hacer las cosas y se eliminan las antiguas. Los errores en las API de las que dependían los programas más antiguos se solucionan, y no se hace ningún esfuerzo por mantener el comportamiento antiguo para mantener la compatibilidad.

Esto obliga a los fabricantes de aplicaciones a mantener constantemente su software y lanzar nuevas versiones con pequeños cambios. Cuesta más dinero ajustar el software para que funcione al mismo tiempo en versiones anteriores de Android y en la última versión. Para mantener la compatibilidad entre las grandes diferencias de versiones de Android, es posible que haya que mantener y distribuir varias versiones de la aplicación por separado. Esto sería bastante costoso y, dado que casi todo el mundo tiene un dispositivo más nuevo, el mercado no justifica el gasto adicional.

El enfoque tradicional de Microsoft ha sido hacer todo lo posible para mantener la compatibilidad con el software antiguo. Un gran número de aplicaciones se probaban en su siguiente versión de Windows antes de su lanzamiento, y se hacían muchos ajustes para garantizar la compatibilidad. Gracias a esto, los desarrolladores de software pueden hacer una versión del mismo que funcione en una versión antigua de Windows, y también funcionará en las versiones más nuevas. Con el lanzamiento de Windows Vista, Microsoft comenzó a alejarse de esta estrategia comercial, y ahora está desarrollando Windows 10 de una manera que se asemeja más a Android, pero la compatibilidad de Windows con el software antiguo sigue siendo mejor que los sistemas operativos móviles e incluso Mac OS X.

1 votos

A juzgar por la documentación de Android, éste también se esfuerza por mantener la compatibilidad. Aunque, en algunos aspectos, eso parece estar cambiando ahora, en aras de la "privacidad".

0 votos

Microsoft mantuvo la retrocompatibilidad porque su mercado principal en ese momento era el de los gobiernos y las empresas, que son muy sensibles al precio de las actualizaciones de software. El mercado principal de Android son los usuarios domésticos que prefieren tener nuevas funciones y olvidarse de las antiguas.

2voto

gronostaj Puntos 111

Respuesta TL;DR:

Porque la programación para cada versión de Android es ligeramente diferente y, por tanto, dar soporte a cada una de ellas cuesta dinero extra. Cuando una versión concreta genera menos beneficios de los necesarios para justificar su mantenimiento, se abandona el soporte.

0 votos

Sin embargo, ese cálculo es demasiado simplista. Podría muy bien ser el caso, que sólo el hecho de que una aplicación esté disponible para una plataforma que no es económicamente viable en sí misma es la razón por la que las otras plataformas son viables, especialmente si interactúan. - Eliminar el apoyo a una plataforma inviable desde el punto de vista financiero puede hacer que otros usuarios dejen de usar la aplicación, haciendo que más plataformas no sean rentables, y así sucesivamente...

0 votos

@I'mwithMonica Bueno, es una respuesta TL;DR ;) Mi intención era publicar una respuesta breve que diera al lector la idea general de la situación, sin entrar en detalles.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X