Script Module – Android / ADB Shell
Descripción
Este módulo es un script autónomo ejecutado directamente en Android shell (/system/bin/sh). No utiliza framework, daemon ni sistema de módulos. La ejecución y los efectos dependen exclusivamente del entorno ADB / shell.
· Ejecución directa en Android (adb shell) · Sin dependencias externas · Sin persistencia automática · Control total del sistema según permisos del shell · Reversión manual mediante script dedicado
module/
├── main.sh
└── uninstall.sh
Restricción: No se permiten archivos adicionales. Toda la lógica debe residir en estos dos scripts.
Ambos archivos DEBEN iniciar con:
#!/system/bin/sh
Motivo:
· Android no garantiza /bin/sh · BusyBox puede no estar presente · /system/bin/sh es el intérprete estándar AOSP
Todo script DEBE definir su ruta absoluta de ejecución:
# Directorio raíz del módulo
MODULE_DIR="$(cd "$(dirname "$0")" && pwd)"
Justificación técnica:
IMPORTANTE: Toda referencia a archivos internos debe derivar de $MODULE_DIR.
Responsabilidades
· Aplicar modificaciones al sistema · Crear archivos, enlaces o configuraciones · Ejecutar comandos privilegiados · Registrar cualquier cambio que requiera reversión
Restricciones
· No debe asumir estado previo del sistema · No debe depender de variables de entorno externas · No debe usar rutas relativas sin $MODULE_DIR
Ejemplo de encabezado mínimo válido
#!/system/bin/sh
MODULE_DIR="$(cd "$(dirname "$0")" && pwd)"
# A partir de este punto, el script opera sin restricciones,
# bajo el modelo de ADB Shell
Responsabilidades
· Revertir todas las acciones realizadas por Man.sh · Eliminar archivos creados · Restaurar configuraciones modificadas · Dejar el sistema en estado previo
Reglas
Encabezado obligatorio
#!/system/bin/sh
Ejemplo desde host
# Aplicar cambios
adb shell
cd /ruta/del/modulo
sh Man.sh
# Revertir cambios
sh uninstall.sh
No se soporta
· Ejecución automática · Hooks de sistema · Eventos de arranque
· El script se ejecuta con los privilegios del shell activo · No existe sandbox · Errores pueden causar: · Corrupción de archivos · Bootloops · Pérdida de datos
ADVERTENCIA: El autor asume responsabilidad total sobre los efectos del script.
Buenas prácticas técnicas
Definir explícitamente el tipo de licencia si se distribuye el módulo.
Niveles de evolución sugeridos
Definir contrato entre Man.sh y uninstall.sh
· Establecer formato de registro de cambios · Especificar estructura de metadatos · Definir protocolo de comunicación entre scripts
Añadir sistema de registro de cambios
· Log estructurado de operaciones · Backup automático de archivos modificados · Sistema de versionado de cambios
Endurecer ejecución (checks de entorno)
· Verificación de permisos · Validación de versión de Android · Check de espacio disponible · Verificación de integridad del script
Adaptarlo como base para otros sistemas
· Magisk Module Template · Shizuku Script Base · Rootless Implementation · KernelSU Module Framework
NOTA: Este documento establece las especificaciones técnicas mínimas para un módulo de script autónomo en Android. Cualquier implementación debe respetar estas reglas para garantizar compatibilidad y seguridad.