Bibliotecas Android / Java

Estas preguntas son mi intento de entender cómo Android maneja archivos JAR y bibliotecas externas, etc. Es conceptual.

En Java, hay un archivo JAR rt.jar que viene con el JRE, por lo que cada aplicación tiene acceso a las bibliotecas principales de Java.

  1. ¿El cargador de clases de Java carga las clases sólo cuando las necesita la aplicación?

  2. ¿Es rt.jar equivalente a android / system / framework / jars?

  3. Cuando desarrollamos una aplicación con el SDK, incluimos android.jar desde una de las API de Android. ¿Es android.jar esencialmente el AOSP compilado para esa API (menos algunas bibliotecas ocultas)?

  4. Android.jar no se incluye realmente con un APK, ¿verdad? Una vez en un dispositivo, el APK está utilizando /system/framework/framework.jar, ¿correcto?

  5. Si sí a 4, ¿cómo le dice a una aplicación que use esa biblioteca? ¿Es esto algo que puedo ver el código fuente para?

  6. Cuando agregamos un JAR a un proyecto de Android, ¿esto es como incluir una biblioteca estática? El código de la biblioteca se acaba de compilar en classes.dex como el resto del proyecto?

  7. Cuando añadimos un proyecto de biblioteca de Android a una aplicación, ¿también se compila en classes.dex? La única diferencia entre esto y 6 es que un proyecto de biblioteca puede contener recursos?

  8. Si cada aplicación hace referencia a /system/framework/framework.jar (y otros, como services.jar etc.), ¿hay un montón de instancias de esa biblioteca ejecutándose al mismo tiempo en el dispositivo? ¿Es como una biblioteca dinámica que se carga en la memoria varias veces?

Me encantaría responder a todas estas preguntas, pero también agradecería sugerencias a algunos buenos lugares para leer sobre estas cosas.

One Solution collect form web for “Bibliotecas Android / Java”

Corregirme si estoy equivocado en cualquiera de las respuestas y editaré:

1.- Android ha sido JIT durante años, pero hay un nuevo tiempo de ejecución que obliga a AOT a mejorar el rendimiento ahora que la mayoría de los dispositivos pueden manejarlo: Dalvik ART

2.- ??

3-5.- La jarra del androide es proporcionada por el IDE para propósitos de compilación, pero la implementación real es cargada por el sistema operativo, así es como logran la compatibilidad hacia atrás (y la fragmentación) y los mismos APKs que trabajan en roms cocinadas como Samsung o Amazonas.

6.- Sí, todo está empaquetado en classes.dex y hay un hardcap de 65k métodos entre todas las dependencias. Hay algunas sustituciones del tiempo del compilador para las dependencias que ya pueden estar incluidas en el sistema operativo.

7.- No estoy seguro acerca de los nuevos AAR pero los módulos u otros proyectos se compilan y se agrupan, sí.

8.- Hay un espacio de memoria compartida para esas cosas, junto con los recursos del sistema: Commonsware – ¿Qué es la sección de Dalvik Consumo de memoria.

  • Proyectos de la Biblioteca de Android: Refactorización y navegación
  • ¡Desajuste del tarro! Corregir sus dependencias
  • Librerías Android Jar
  • Duplicar archivos durante el empaquetado de APK app-debug-unaligned.apk
  • El mejor enfoque para cargar múltiples bibliotecas nativas en la aplicación para Android
  • Ejecutar un tarro multidex independiente en Android Kitkat
  • Crear gran Jar (escritorio) de android / escritorio gdx proyecto
  • ¿Es posible incluir el diseño y otros recursos en un tarro de Android?
  • Generar un JAR ofuscado para la distribución de código
  • ¿Por qué Android Studio no reconoce las importaciones de la biblioteca .jar?
  • Cree una biblioteca de Jar Android para su distribución
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.