Qué pensar sobre el nuevo marco de complemento VirtualApp de código abierto de Lody
En primer lugar, VA utiliza la función de sincronización de ContentProvider para construir un mecanismo de comunicación sincrónica entre procesos, lo que libera el núcleo de todo el marco del dolor del proceso asincrónico del servicio AIDL y el código se ve; más limpio y muy fácil de usar; al mismo tiempo, este mecanismo también resuelve la dificultad de la comunicación entre procesos entre complementos, similar a DroidPlugin. En un sistema de complementos multiproceso como DroidPlugin, si los complementos necesitan comunicarse entre sí, se deben utilizar mecanismos IPC: transmisión, AIDL, etc. Estas comunicaciones son asincrónicas y muy difíciles de escribir; con el complemento de comunicación síncrona entre procesos AIDL integrado en el mecanismo ContentProvider, el proceso de comunicación es tan simple como una llamada de función ordinaria. El principio de implementación es tratar a ContentProvider como un ServiceManager, donde todos los Binders se colocan para su administración y las consultas/llamadas se utilizan para llamar sincrónicamente a los objetos Binder para que se ejecuten a través de diferentes procesos. Escribiré un artículo especial sobre esto.
En segundo lugar, con respecto a la tecnología Hook del componente, eché un vistazo general al código y descubrí que el procesamiento de Activity no es esencialmente diferente del de DroidPlugin, pero el procesamiento del componente Service y el componente ContentProvider sí lo es; muy mejorado; es muy claro y el procesamiento también va directo al grano, se puede ver que la pequeña Loli tiene una habilidad considerable en el Framework de Android. Aquí hay un anuncio, análisis del principio del complemento de Android: complemento ContentProvider. El procesamiento de ContentProvider es similar al de mi artículo, los lectores pueden tener un poco de experiencia.
Luego, en términos del marco Hook, Lody utiliza tecnología de inyección de dependencia basada en anotaciones, lo que hace posible conectar una gran cantidad de objetos, y el código está realmente bien organizado. El enlace DP es bastante simple; claro. Por supuesto, aparte de la diferencia en el estilo de escritura, a nivel de Java, sus ganchos son esencialmente los mismos. Con respecto a cómo conectar, puede consultar mi introducción a DroidPlugin:
Análisis de los principios del complemento de Android: mecanismo de enlace del proxy dinámico
Análisis de los principios del complemento de Android: -Mecanismo de enganche de ganchos Binder. -El mecanismo de enganche de Binder Hook
Análisis del principio del complemento de Android -El mecanismo de enganche de Binder Hook