Desventajas en Multidexing la aplicación de Android
Recientemente he leído sobre el Dalvik 65K método límite. He entendido que la lista de invocación de método sólo puede invocar primer 65536 referencias de método. Para hacer frente a esto tenemos una serie de soluciones. Una de las cuales es la multidifusión donde dividimos los archivos .dex en número de clases [classes.dex, classes1.dex …] usando la biblioteca de soporte de android.
Lo que no he podido entender es, ¿qué inconveniente sufre una aplicación android debido a este multidexado y por qué debemos poner mucho esfuerzo en minimizar el número de métodos de referencia.
- Hex to String en Java El rendimiento es demasiado lento
- Android: RunOnUiThread vs AsyncTask
- Android - ListView con imágenes se desplaza demasiado lento incluso sin ningún procesamiento en el método getView del adaptador
- Acceder directamente a los campos estáticos en lugar de llamar a un método getter estático, ¿es más rápido?
- Cargando datos de forma eficaz en RecycleView
Básicamente en mi entendimiento, para reducir el recuento de métodos tengo que reducir la modularización, lo que hace que mi código sea menos legible, dejando aparte el número de horas quemadas al dividir los códigos de bibliotecas de terceros. ¿Es la reducción del método vale la pena?
- Descomprimir archivos de una manera más rápida que usar java.util.zip en Android
- Cómo comprobar si existe una clave en Json Object y obtener su valor
- Desempeño de Android: Strings vs. Enums vs. Static Final Ints
- Para la eficiencia de bucle
- Rendimiento en tiempo real de la galería de lienzo de Android
- Vista personalizada de Android delegado de grupo addView
- Apague TODA la optimización de Dalvik VM
- Rendimiento de Scala para Android
Usted está pensando demasiado sobre multidex, en lugar de ello debe observar e identificar si hay algún problema de rendimiento con su aplicación mediante el perfil de su aplicación.
Multidexing apenas aumenta el tamaño de código, el tamaño principal y los problemas de rendimiento son con la animación / imagen / audio / video recursos, son los que aumentan el tamaño y reducir el rendimiento.
Incluyendo muchas bibliotecas de terceros eventualmente pasará límite de 64k y casi todas las aplicaciones de hoy en día son multidexed, los usuarios demandan aplicaciones multifeatured de hoy, que requiere la integración con muchas bibliotecas de terceros.
Sólo cuando se está haciendo la animación / programación de juegos, donde la velocidad importa más, más llamadas de método puede ser perjudicial, pero esto no tiene nada que ver con multidexing, incluso mal escrita pequeña aplicación no multidexing se realizará mal en cualquier dispositivo.
El tiempo de inicio afectará con el multidexado, pero sin duda se puede mejorar al cambiar la lógica de la aplicación para retrasar la carga de otras costosas bibliotecas y recursos.
¿Es la reducción del método vale la pena ?
NO
Idealmente, debería usar más métodos y modularizar su código, ya que la prueba y el cambio de aplicaciones para móviles es un reto enorme después de su publicación. La depuración y eliminación de errores son más costosos que el tamaño multidex y su impacto en el rendimiento. Debido a pequeñas pantallas, diferentes marcas, diferentes UI, los usuarios se enojan más en las aplicaciones en el teléfono en comparación con las computadoras. Mantener la demanda de los usuarios será más fácil si el código se divide en múltiples bibliotecas probadas individuales.
El inconveniente principal es un tamaño dex / apk mayor. Los archivos Dex tienen conjuntos de constantes que se comparten entre todas las clases en ese archivo dex. Cuando las clases se dividen en varios archivos dex, estas constantes compartidas tienen que ser duplicadas en cada archivo dex en el que se usan.
- ¿Cómo mostrar las pestañas (espacios en blanco) procedentes de la base de datos MySQL correctamente en ambos en Android y IOS aplicación?
- Evitar que algunos usuarios cierren el servicio de Android