Colección de citas famosas - Slogan de motivación - Varias tecnologías comunes para el desarrollo inalámbrico de Android (alta dirección de Alibaba

Varias tecnologías comunes para el desarrollo inalámbrico de Android (alta dirección de Alibaba

El desarrollo completo de una aplicación móvil de Android requiere múltiples etapas, como la descomposición de requisitos, el diseño de la arquitectura, el desarrollo y la depuración, las pruebas y el lanzamiento en línea. Después del lanzamiento, habrá una evolución iterativa de las funciones del producto, así como de cuestiones como el rendimiento, la seguridad y la calidad de la red inalámbrica.

Las aplicaciones móviles tienen diferentes formas de productos. Algunas son contenido, otras son herramientas y otras son sociales. Por lo tanto, su lógica empresarial se centra en algunas tecnologías centrales diferentes, pero todas utilizan algunas soluciones técnicas comunes. Hoy, presentaremos brevemente estas tecnologías comunes y luego presentaremos en detalle los principios y escenarios de uso de estas tecnologías a través de temas especiales.

1. Índice múltiple

En el formato de archivo dex utilizado por la máquina virtual Dalvik, el tipo nativo short se usa para indexar la cantidad de métodos en el archivo, es decir, sólo puede tener un máximo de 4 bytes de 65536 métodos. Durante el proceso de empaquetar el apk, todos los archivos de clase requeridos por el proyecto se fusionarán y comprimirán en un archivo dex, lo que significa que el número total de métodos de código de desarrollo propio más bibliotecas de referencia externas no puede exceder 65535.

A medida que la lógica empresarial continúa creciendo, es fácil exceder este límite y encontrará este error al compilar:

Afortunadamente, Google proporciona oficialmente una solución Scheme Multidex, que dividirá el archivo dex en dos o más. El segundo archivo dex se llama clases2.dex. Una vez que se crea una instancia de la aplicación, extraerá Classes2.dex del apk, lo copiará en el directorio de la aplicación y lo inyectará en el cargador de clases actual mediante reflexión. Sin embargo, esta solución no puede resolver todos los problemas y no se puede utilizar directamente. En su lugar, necesita agregar algunas de sus propias modificaciones para resolver problemas como NoClassDefFoundError, INSTALL_FAILED_DEXOPT, etc. para garantizar que su propio dex se cargue y ejecute sin problemas.

2. Complementos

Aunque Multidex puede resolver el límite de la cantidad de métodos, a medida que hay más y más lógica de negocios disponible, el tamaño de la apk se vuelve cada vez más grande. y algunas funciones no son Todos los usuarios quieren usarlo, por lo que algunos módulos funcionales se convertirán de forma independiente en complementos para que los usuarios puedan descargar actualizaciones a pedido. Esto no solo reduce el tamaño del paquete, sino que también mejora la experiencia del usuario.

Los complementos son similares a los archivos dll de Windows y se colocan en un directorio específico. El marco principal de la aplicación utilizará LoadLibrary para cargar todos los archivos dll y acceder a los complementos de acuerdo con la interfaz del complemento. Lo mismo ocurre con la tecnología de complemento de Android. Utiliza un mecanismo que permite que un proceso ejecute múltiples apk. Utiliza ClassLoader para cargar clases distintas del apk host. El contexto del complemento se puede crear a través del método createPackageContext. . Debido a que las actividades, servicios y otros componentes del complemento no se ejecutarán si no se declaran en AndroidManifest.xml, es necesario declarar una ProxyActivity en AndroidManifest.xml con anticipación y pasar esta ProxyActivity al complemento para que el También se puede acceder al recurso de actividades del complemento.

3. Parche activo

A veces, algunos errores graves o vulnerabilidades deben corregirse con urgencia, pero algunos usuarios no quieren o no quieren actualizar de inmediato y lo hacen con frecuencia. Las actualizaciones sin funciones especiales son sólo actualizaciones para corregir errores, lo que no favorece a los usuarios activos. Los parches calientes pueden resolver este dilema. Es una solución técnica que se puede reparar en línea y tiene la capacidad de cambiar de método dinámicamente. Normalmente, las aplicaciones móviles de gran tamaño utilizan parches activos para hacer frente a emergencias.

Los parches activos pueden modificar métodos Java a través de enlaces, inyectar su propio código y lograr modificaciones de tiempo de ejecución no invasivas, o usar programación directa para generar archivos de parche a través de herramientas y señalar métodos en los archivos de parche a través del puente jni. . También puedes usar ClassLoader para buscar clases en dex. Si encuentras una clase, volverás. Si no se encuentra, la búsqueda continuará desde el siguiente archivo dex. Se puede pensar que después de solucionar el problema, se puede generar un dex por separado e insertarlo en el frente de la matriz dexElements a través de la reflexión, para que dalvik pueda cargar las clases en el parche.

4. Canal Push

Push es una tecnología inalámbrica comúnmente utilizada en aplicaciones móviles. Se basa en el mecanismo de latido TCP y mantiene una conexión a largo plazo con el cliente. El propósito es enviar mensajes al cliente o reemplazar la estrategia en la que el cliente extrae periódicamente del servidor. En cambio, el cliente extraerá después de recibir un mensaje de inserción.

Si cada aplicación implementa su propio canal push, la CPU se activará de vez en cuando y el consumo de energía alcanzará niveles intolerables. Además, el costo de construir una plataforma push autoconstruida también es muy alto y existen problemas con el tiempo real y la eficiencia. Generalmente, se utilizan directamente las soluciones push proporcionadas por algunos proveedores de servicios. Estas plataformas push generalmente están optimizadas en términos de penetración de red y plataforma cruzada, paquetes de latidos de conexión larga, reutilización de enlaces de aplicaciones multicliente y mantenimiento de conexión y servicio. Por ejemplo, Agoo era originalmente un servicio push desarrollado por la División Inalámbrica de Taobao. Después de mejorar y respaldar gradualmente otras aplicaciones, coopera con Umeng y otros para brindar servicios push a terceros mediante la expansión y mejora de la capacidad del servidor, la optimización del protocolo de comunicación, los negocios y la apertura.

Utilice materiales mejorados

Una aplicación o juego móvil popular recibirá mucha atención después de su lanzamiento y, a menudo, se enfrenta a la piratería a través del embalaje secundario. Los piratas informáticos pueden modificar los archivos de recursos, accesorios y partituras del juego, o incluso dirigir directamente el sitio web visitado al servidor que configuró, lo que perjudicará los intereses de los desarrolladores. O implantan en secreto su propio código malicioso, que se parece exactamente a la aplicación original en la superficie, pero roban la privacidad del usuario e implantan troyanos en segundo plano, o aprenden la tecnología central de la aplicación original mediante ingeniería inversa y rompen las barreras técnicas; a la competencia.

Para evitar ser pirateado, la ofuscación por sí sola no es suficiente. Incluso si se ofusca en la capa nativa, aún así se descompilará inteligentemente. Por lo tanto, se necesita un conjunto de soluciones de protección para los APK para evitarlo. depuración, ingeniería inversa y manipulación. El método de refuerzo general es cifrar primero el apk original y luego fusionarlo con el shell para generar un nuevo apk. El shell se utiliza para descifrar el archivo dex del apk. Cuando se inicia la aplicación, el shell descifra el apk original, prepara su propio cargador de clases definido, luego obtiene el nombre de la aplicación en el programa fuente, encuentra el objeto de aplicación correcto a través de la reflexión y ejecuta su método onCreate para que el apk original realmente correr. Otros métodos anti-depuración incluyen agregar algunas instrucciones no válidas o punteros no válidos al programa fuente, lo que hace que la herramienta anti-depuración falle, así como agregar instrucciones, usar algunos saltos, operaciones de pila, etc., para que el cracker no pueda entender claramente. el contenido del desmontaje.

6. Otros

Además de los puntos anteriores, también existen tecnologías como estrategia de escala de grises, optimización del tráfico de enlaces, configuración de actualización dinámica y anti-secuestro de DNS. Estará involucrado en el lado del servidor y en el lado del cliente participará en informes de seguimiento de usuarios, monitoreo en línea, mantenimiento de procesos, desarrollo híbrido nativo y H5, y marcos de inyección.