Red de conocimiento informático - Aprendizaje de código fuente - Principio del complemento

Principio del complemento

En general, el marco de componentes tiene una única función y se centra en el desarrollo modular, pero no existe tecnología negra y no hay problemas de compatibilidad con la versión de Android. El marco del complemento es poderoso y lo más importante es que tiene la capacidad de reparar en caliente, cargar y eliminar módulos dinámicamente, pero debido a que necesita conectar componentes del sistema, existen posibles problemas de compatibilidad.

La corrección urgente de Atlas utiliza su propio Andfix, basado en el gancho nativo.

El complemento se refleja en la división funcional: extrae una determinada función de forma independiente, la desarrolla de forma independiente, la prueba de forma independiente y luego la inserta en la aplicación principal para carga dinámica. Esto se utiliza para evitar que la escala de la aplicación principal supere el límite. Se logra a través de proxy o Hook.

Para abrir la Actividad en el complemento normalmente, se requieren los siguientes recursos:

1. Cargue la apk del complemento a través de DexClassLoader

2. Obtenga el paquete actual a través del administrador de paquetes Información de clase cargada

3. Obtenga los recursos en el apk del complemento a través de AssetManager

4. Proporcione contexto y gestión del ciclo de vida a través de la actividad del proxy en la aplicación de shell (cuatro en el complemento) Los componentes grandes no tienen un ciclo de vida porque no están registrados en AndroidManifest.xml de la aplicación de shell)

Inicie y sincronice el ciclo de vida de la Actividad del complemento a través del gancho Actividad proxy

Implemente el inicio de la actividad del complemento en uno o décimo paso.

Iniciar la Actividad del complemento a través del gancho debe resolver los siguientes problemas:

a.

b. Cómo crear la instancia de Actividad y sincronizar el ciclo de vida

Veamos su plan de implementación a través del marco del complemento VirtualApk:

a. las capturas de Actividad de varios modos de inicio en el Manifiesto, y al iniciar el paso 1 del Hook, reemplace el Intent con la Actividad que ha sido reemplazada en el Manifiesto de acuerdo con el modo de inicio, resolviendo así la detección registrada en el Manifiesto

b. Enganche el paso 10, use el reflejo de ClassLoader del complemento para crear la Actividad del complemento, y luego las devoluciones de llamada del ciclo de vida de la Actividad se notifican a la Actividad del complemento, lo que resuelve el problema de creando actividad y sincronizando el ciclo de vida

1. Respecto a la generación de dex

Podemos usar la herramienta dx, convertir el paquete jar en un archivo dex

2. dex proceso de carga

Cargue el archivo dex a través de DexClassLoader y luego analice la clase, método, etc.

Referencia:

/p/7e4958d02094