Varias tecnologías comunes para el desarrollo inalámbrico de Android (Alibaba senior
El desarrollo completo de una aplicación móvil Android requiere múltiples etapas, desde la descomposición de los requisitos, el diseño de la arquitectura hasta el desarrollo y la depuración, las pruebas y el lanzamiento en línea. Además, habrá una evolución iterativa de las funciones del producto. Te enfrentarás a muchos problemas, 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, las tecnologías centrales en las que se centra su lógica empresarial son algo diferentes, pero todas utilizan algunas tecnologías comunes. . Hoy presentaremos brevemente estas tecnologías de uso común. Más adelante, presentaremos temas especiales para presentar en detalle los principios y escenarios de uso de estas tecnologías.
1. Multidex
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, lo que significa que puede Solo tiene un máximo de 4 caracteres. Hay 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. El código de desarrollo propio más las bibliotecas con referencias externas no pueden exceder 65535.
A medida que la lógica empresarial continúa creciendo, es fácil exceder este límite y encontrará este error durante la compilación:
Afortunadamente, Google ha proporcionado oficialmente una solución Multidex. , dividirá el archivo dex en dos o más. El segundo archivo dex se llama clases2.dex. Después de crear una instancia de la aplicación, se extraerá el archivo dex del apk y se copiará en el directorio de la aplicación. a través de la reflexión. Sin embargo, esta solución no puede resolver todos los problemas y no se puede usar directamente. En cambio, se deben agregar algunas modificaciones propias para resolver problemas como NoClassDefFoundError e INSTALL_FAILED_DEXOPT para garantizar que su dex se cargue y ejecute sin problemas.
2. Complemento
Aunque Multidex puede resolver la limitación de la cantidad de métodos, a medida que aumenta la lógica empresarial, el tamaño de la apk se vuelve cada vez más grande y algunos no todos los usuarios. desea utilizar las funciones, por lo que algunos módulos funcionales se separarán 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. Se colocan en un directorio específico. El marco principal de la aplicación utilizará LoadLibrary para cargar cada archivo dll y acceder al complemento de acuerdo con el complemento. en interfaz. Lo mismo ocurre con la tecnología de complemento de Android. Utiliza el mecanismo de que un proceso puede ejecutar múltiples apk y usa ClassLoader para cargar clases distintas del apk host. El contexto del complemento se puede crear mediante el método createPackageContext. Debido a que la actividad, el servicio y otros componentes del complemento no se ejecutarán si no se declaran en AndroidManifest.xml, es necesario declarar una clase de proxy (ProxyActivity) en las capacidades de recursos de AndroidManifest.
3. Hot Patch
A veces, algunos errores o vulnerabilidades graves deben corregirse con urgencia, pero algunos usuarios no quieren o no quieren actualizar de inmediato y actualizan con frecuencia sin actualizaciones de funciones especiales. Las actualizaciones que sólo corrigen errores no favorecen a los usuarios activos. Los parches en caliente 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. Generalmente, las aplicaciones móviles a gran escala utilizarán parches en caliente para manejar emergencias.
Hot Patch puede modificar métodos Java a través de enlaces, inyectar su propio código y lograr modificaciones de tiempo de ejecución no intrusivas, o usar programación directa para generar archivos de parche a través de herramientas y señalar los archivos de parche a través del método jni bridge. .
También existe el uso de ClassLoader. Al buscar una clase en dex, si se encuentra la clase, se devolverá. Si no se encuentra, continuará buscando desde el siguiente archivo dex. Imaginé que una vez solucionado el problema, se puede generar un dex separado insertando Reflection en la parte frontal de la matriz dexElements, lo que permite a dalvik 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 de TCP y mantiene una conexión larga con el cliente. Se utiliza para enviar mensajes al cliente, o para reemplazar la estrategia del cliente de extraer regularmente del servidor al cliente después de recibir el mensaje de envío.
Si cada aplicación implementa su propio canal de inserción, la CPU se activará de vez en cuando y el consumo de energía alcanzará un nivel intolerable. Además, el costo de construir una plataforma de inserción por sí sola también lo es. Muy alto y el rendimiento en tiempo real es muy bajo. También hay problemas con la eficiencia y la eficiencia. Generalmente, las soluciones push proporcionadas por algunos proveedores de servicios se utilizan directamente. Estas plataformas push generalmente se han optimizado y diseñado y tienen una excelente compatibilidad. Se han optimizado la penetración de la plataforma y la red, los paquetes de latidos de conexión largos y la reutilización de enlaces de aplicaciones multicliente, los servicios y las tecnologías de mantenimiento de la conexión. Por ejemplo, Agoo era originalmente un servicio push desarrollado por la División Inalámbrica de Taobao. Después de mejorar y admitir gradualmente otras aplicaciones de Taobao, y a través de la expansión y mejora de la capacidad del servidor, la optimización del protocolo de comunicación y las capacidades comerciales y abiertas, cooperó con Umeng y otros. comenzó a Los terceros proporcionan servicios push.
5. Refuerzo de aplicaciones
Después de que se lanza una aplicación o juego móvil popular, recibirá mucha atención. A menudo se encuentra con piratería de paquetes secundarios y los crackers modifican el juego. Los archivos de recursos, accesorios, partituras e incluso dirigen directamente el sitio visitado al servidor creado por uno mismo, perjudicando los intereses del desarrollador o implantando en secreto su propio código malicioso, que tiene exactamente el mismo aspecto que la aplicación original en el sitio. superficie, pero en segundo plano Robar la privacidad del usuario e implantar troyanos o aprender la tecnología central de la aplicación original mediante ingeniería inversa para romper las barreras técnicas de la competencia;
Para evitar que se piratee, la ofuscación por sí sola no es suficiente. Incluso la ofuscación en la capa nativa será descompilada por personas capacitadas, por lo que se necesita un conjunto de soluciones de protección para apk para evitar la depuración y prevenir. Ingeniería inversa y a prueba de manipulaciones. 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 primero descifra el apk original, prepara su propio ClassLoader 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, de modo que el apk original pueda ser realmente correr. Algunos otros métodos anti-depuración incluyen agregar algunas instrucciones no válidas o punteros al programa fuente para las herramientas de descompilación, lo que hace que la herramienta de descompilación falle y agregar instrucciones, utilizando algunos saltos, operaciones de pila y otras instrucciones para hacer imposible que los crackers puedan hacerlo claramente. entender el contenido desmontado.
6. Otros
Además de los puntos anteriores, el servidor también incluirá 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. El final implicará informes de usuarios, monitoreo en línea, mantenimiento de procesos, desarrollo híbrido nativo y H5, marco de inyección, etc.