Cómo empezar a aprender desarrollo de bajo nivel de Android
Aprender sobre el desarrollo subyacente de Android:
1. Desarrollo de programación heterogénea basado en CPU+GPU de Android. Actualmente, existen principalmente las siguientes plataformas:
. 1. OpenCL
Una API de bajo nivel comúnmente utilizada en sistemas de escritorio y computación paralela a gran escala. Recientemente, los chips emblemáticos o casi emblemáticos de los principales fabricantes de chips han comenzado a admitir el estándar OpenCL 1.1 o 1.2, incluidos chips de Qualcomm, Samsung, MediaTek, Rockchip y otros fabricantes, y puede encontrar soporte para OpenCL.
2. CUDA
Actualmente, solo el dispositivo basado en el chip Tegra K1 de NVIDIA (NVIDIA Shield) es compatible con CUDA, por lo que el alcance de la compatibilidad es relativamente limitado.
3. RenderScript (RS)
El propósito de la programación heterogénea promovida por Google es permitir que la plataforma te ayude a elegir el procesador a ejecutar, lo que significa que no conoces tu programa Si se ejecuta en la CPU o en la GPU lo determina el controlador del sistema. La idea es hermosa, pero la realidad es que los desarrolladores no compran RS. Todos sienten que el rendimiento de RS es incontrolable y la flexibilidad es demasiado pobre. Además, los fabricantes de chips generalmente no lo han optimizado. Al estar en un nivel relativamente bajo, el RS rara vez se utiliza en aplicaciones prácticas.
2. Debido a la popularidad de OpenCL, las siguientes secciones solo se centran en OpenCL.
Actualmente admite dispositivos y chips OpenCL
1 GPU que admiten OpenCL
Casi todas las GPU de Qualcomm, incluidas, entre otras, las siguientes GPU (Adreno 305, 320, 330, 405, 420, 430, 530...)
GPU de las series 6 y 7 de ARM Mali, como T628, T760
Más reciente desde 2014 Imagination PowerVR GPU, como G6430
2 Chip compatible con OpenCL. La siguiente es una lista muy aproximada de los principales chips que admiten OpenCL.
Qualcomm 8064, 8974 (Snapdragon 800, 801), 8084 (Snapdragon 805), 8994 (Snapdragon 810), etc.
Samsung Exynos Orion 5420, 5433 (ARM integrado Mali GPU)
MediaTek MT6752 (GPU ARM Mali T760 integrada)
Rockchip RK3288 (GPU ARM Mali integrada)
3. tabletas compatibles con OpenCL. Hay innumerables ejemplos de esto, así que aquí hay solo algunos ejemplos como referencia. (Nota: aunque la serie de teléfonos móviles o tabletas Google Nexus admite OpenCL en el hardware, básicamente no es compatible con OpenCL porque se ha eliminado el controlador OpenCL; vale la pena señalar que, según informes de blogs extranjeros, el OpenCL correspondiente puede Vuelva a colocar el controlador en el dispositivo para volver a habilitar la compatibilidad con OpenCL; consulte la página maxlv.net para obtener más detalles)
Samsung Galaxy S4, S5, S6, Note 3, Note 4
LG G2, G3 , G4
HTC One M7, M8, M9
Móviles y tablets Xiaomi con chips Qualcomm
Meizu M1 Note
TSMC P90HD
Bla y sigue. . . .
Si no está seguro de si el dispositivo en cuestión es compatible con OpenCL, puede utilizar OpenCL-Z Android para detectarlo. Este software puede mostrar información detallada del dispositivo OpenCL y ejecutar micro-benchmark para detectar la potencia informática de. el dispositivo.
3. Conocimientos a dominar:
1. Conocimientos básicos simples de GPU
2. Programación paralela OpenCL
3. Conocimiento de NDK
4. Escritura de la interfaz JNI de Android
5. Conocimiento simple del desarrollo de programas de Android
4. la operación sin explicación):
1. Escriba un programa OpenCL C/C++ para implementar el código informático central de la GPU
2 Utilice Android NDK para compilar el C/escrito previamente. Código C++. En esta etapa, puede trabajar en un entorno C/C++ puro. Puede escribir la función principal para probar las funciones implementadas, usar NDK para compilar el código en código ejecutable (BUILD_EXECUTABLE) y luego usar ADB para enviar el programa ejecutable. el dispositivo para correr. La ejecución de programas ejecutables requiere que el dispositivo tenga permisos de root. Si no tiene permisos de root, puede utilizar la herramienta Native Program Launcher (AndroidNativeLauncher · GitHub, es posible que deba sortear el muro) para ejecutar código binario en el dispositivo.
3. La etapa anterior de prueba ha finalizado y las funciones son básicamente normales. Comience a escribir la interfaz JNI.
4. Comience a escribir aplicaciones de Android y use JNI para encapsular funciones nativas. Compile código C/C++ en una biblioteca de vínculos dinámicos.
5. En el programa de Android, cargue estáticamente la biblioteca de enlaces dinámicos compilada en el paso anterior.
6. Cuando sea necesario (como un evento de clic en un botón), llame a la función nativa correspondiente para implementar la función correspondiente.