Configuración de varias tabletas desde el primer momento

Tengo la tarea de configurar más de 50 tabletas (Binatone Homesurf 744, ¡Sí, barata y alegre!), Todas necesitan la misma aplicación instalada y la misma configuración inalámbrica ingresada, pero requieren diferentes archivos de configuración (archivos de configuración almacenados en la tarjeta SD).

Esperaba que pudiera haber una solución que pudiera configurar cada una de las tabletas a través de ADB o un script sin acceso de root si es posible (ya que esto sería un paso adicional y llevaría más tiempo). Las tabletas hasta ahora han salido de la caja con el modo de depuración ya habilitado. Si accedo a la tableta a través de ADB y escribo "su", me da algún tipo de acceso de root ya que el símbolo cambia de "$" a "#", pero no puedo volver a montar el /sistema a rw.

El proceso que me gustaría hacer es el siguiente: -

  • Inicie la tableta y conéctela mediante un cable USB a la PC para acceder a ADB
  • Desactivar/Omitir automáticamente la pantalla de "Bienvenida" (Asistente de configuración inicial)
  • Instalar la configuración inalámbrica
  • Instalar APK requerido
  • Empuje los archivos de configuración requeridos
  • Reinicie la tableta si es necesario

Creo que pude haber respondido la pregunta sobre deshabilitar\saltar la pantalla de "bienvenida" después de un poco de investigación. Creo que esto requiere acceso completo a la raíz o rw para modificar los archivos del sistema (ro.setupwizard.mode=DISABLED, ¿creo?).

Con respecto a la configuración inalámbrica, puedo agregar la configuración inalámbrica manualmente en el shell ADB a través del siguiente comando después de cambiar al usuario "wifi" (emitiendo "su wifi"): -

echo 'network={\nssid="Wireless"\npsk="i*********m"\nkey_mgmt=WPA-PSK\npriority=1\n}' >> /data/misc/wifi/wpa_supplicant.conf

Después de reiniciar la conexión inalámbrica a través de ADB, la tableta se conecta felizmente a la conexión inalámbrica recién agregada.

Puedo instalar el APK requerido y "empujar" los archivos de configuración requeridos manualmente o mediante un script por lotes en Windows.

Se agradecería cualquier ayuda para automatizar esto y hacer las cosas lo más simples posible.

¡Gracias de antemano!

Si ese comando ADB funciona, lo más probable es que la tableta esté rooteada, ya que los archivos /data/miscgeneralmente no pueden ser escritos por nadie más que por un usuario del sistema. No creo que haya una manera de omitir automáticamente el asistente (y ninguna aplicación puede conectar el cable por usted), pero todo lo demás debería ser posible fácilmente. Una cosa que necesito saber antes de poder responder: ¿Qué sistema operativo se ejecuta en su computadora? Puedo configurar una respuesta para Linux, si eso es aceptable (que también debería funcionar en una Mac y podría adaptarse a Windows).
Gracias Izzy, tengo acceso tanto a Linux como a Windows, por lo que agradecería mucho una respuesta para Linux al menos para darme una idea de por dónde empezar.
Bien, ¡así que aquí tienes! He incluido algunas explicaciones que deberían hacer posible adaptar la idea para otros sistemas también. ¡Espero que lo encuentres útil!

Respuestas (1)

Así que aquí hay una solución para Linux. La primera parte que ya mencionó en su pregunta, pero para completar, la incluiré de todos modos:

#!/bin/bash
#
echo "Plug in the cable now, please!"
# Just kidding: That and skipping the intro you'll have to do manually :)
# As well as ensuring that USB debugging is enabled etc. Test with
# "adb devices". If it shows the connected device, go on.

# Install Wireless Settings
echo "Installing wireless settings..."
adb shell su -c "echo 'network={\nssid="Wireless"\npsk="i*********m"\nkey_mgmt=WPA-PSK\npriority=1\n}' >> /data/misc/wifi/wpa_supplicant.conf"

# Install Required APK
# assuming all the required APK files reside in a "install" sub-directory:
echo "Installing APKs..."
for apk in install/*.apk; do
   adb install "${apk}"
done

# Push Required Configuration Files
# these and all other files you want to push you've placed into
# the "upload" sub-directory **WITH FULL PATH** (e.g. to push "foo" to
# "/data/local", it would be saved as "upload/data/local/foo
echo "Uploading files..."
adb push upload /

# Restart Tablet if Required
echo "Rebooting device..."
adb reboot

Por supuesto, esto es solo un esqueleto; es posible que desee tener alguna "comprobación de éxito" en su lugar, o escribir un registro para evaluar más tarde. Pero contiene todo el material técnico que necesita:

  • adb shell su -c "command"para ejecutar un comando como root: aquí para agregar su configuración inalámbrica
  • adb installpara instalar sus archivos APK. En caso de que estas sean solo versiones más nuevas de aplicaciones ya instaladas en los dispositivos, agregue el -rinterruptor (reinstalar); una instalación simple fallaría entonces (es decir, hacerlo adb install -r "${apk}")
  • adb pushpara transferir archivos al dispositivo. Tenga en cuenta algunas cosas aquí:
    • La sintaxis es adb push <source> <target>(la contraparte sería adb pull <source> <target>)
    • puede enviar un archivo o un directorio completo
    • <source>y <target>debe ser del mismo tipo (es decir, ambos son un nombre de archivo o ambos son un nombre de directorio)
    • solo puede enviar a directorios a los que tiene acceso de escritura. Entonces, para ingresar a las "áreas del sistema", el demonio ADB en el dispositivo debe estar ejecutándose en modo raíz

Como la última condición suele ser culpable (en "dispositivos de producción", adbdse ejecuta en "modo seguro", es decir, no root), use una solución alternativa empujando primero los archivos a un "área común" (por ejemplo, la tarjeta SD interna) y, a continuación, cópielos. Ejemplo:

adb shell "mkdir /sdcard/misc"
adb push upload/data/misc /sdcard/misc
adb shell sudo -c "cp -a /sdcard/misc /data/misc

Y como último consejo: es posible que deba verificar los permisos (incluida la propiedad), al menos cuando se trata de archivos relevantes del sistema. Así que primero intente con un dispositivo, investigue los resultados, vea si funciona como se esperaba (ajústelo si no, incluido el ajuste de su(s) script(s)) y, si es necesario, restablezca la configuración de fábrica y comience de nuevo para verificar que funciona ahora. Y, por cierto: estas cosas de "instalar y cargar" son el siguiente elemento en mi lista de tareas pendientes para Adebar ;)

¡Buena suerte!

PD: mientras tanto, "instalar y cargar cosas" está implementado en Adebar :)