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.

  • ¿Por qué consigo Link de clase falló al importar un jar en un proyecto de Android en Eclipse?
  • Importar archivo .jar externo al proyecto Android
  • Cómo incluir archivos jar en mi proyecto eclipse
  • Biblioteca de archivos de Android (aar) vs jar estándar
  • Crear jar para el proyecto androide en eclipse
  • Erro de Xalan.jar al crear un proyecto android
  • Generar un JAR ofuscado para la distribución de código
  • Cómo generar un archivo jar para un proyecto java y usar el jar en un proyecto android
  • Cómo evitar el acceso de clase en el proyecto de la biblioteca de Android Y utilizar paquetes
  • Cómo agregar el archivo jar a la ruta de construcción
  • Proyecto de biblioteca de Android como archivo jar para distribución, como google analytics
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.