0 votos

Cómo empujar gapps a través de adb a un dispositivo rooteado

Tengo una Samsung t355c. Un modelo de China de la tableta normal que no tiene gapps y hasta donde entiendo tiene un bootloader bloqueado. No hay recuperación personalizada para ello. Funciona con 5.0.1

Logré hacerle root usando kingo e intenté muchas formas de instalar aplicaciones de Google en él. Al final terminé brickándolo por ahora... volviendo a descargar la rom original.

La pregunta es. Después de repararlo y hacerle root de nuevo Usando adb con el root. ¿Cómo puedo instalar gapps?

0 votos

Un método puede ser: extraer el zip de GApps y separar los archivos destinados a ser copiados en la partición del sistema. Luego, copiar cada uno de ellos individualmente a su ubicación prevista. Para saber la ubicación, busca algún script que contenga instrucciones para el Recovery. Así tendrás una idea. Reinicia y observa qué sucede.

1 votos

No olvides ajustar los permisos (también encontrados en ese script). Además, necesitarás remontar /system como lectura-escritura antes, y luego volver a solo lectura después de empujar las aplicaciones.

0 votos

Utilicé link2sd para convertirlos a sistema, después de algunos errores, inicié sesión en google tengo gmail, pero no puedo conectarme a la playstore @Izzy ¿qué permisos necesito cambiar?

2voto

Izzy Puntos 45544

No he intentado realmente esto, pero un enfoque posible sería seguir los pasos que realizaría una recuperación personalizada al instalar ("flashear") el archivo .zip - que se puede encontrar en META-INF/com/google/android/updater-script (después de extraer el archivo). Para el archivo de Kitkat GApps, esto se ve así:

ui\_print("Instalando archivos...");
run\_program("/sbin/busybox", "mount", "/system");
show\_progress(1, 15);
delete("/system/app/Provision.apk","/system/app/QuickSearchBox.apk","/system/app/priv-app/SetupWizard.apk","/system/app/priv-app/Velvet.apk","/system/app/Vending.apk","/system/app
package\_extract\_dir("system", "/system");
set\_perm(0, 0, 0755, "/system/addon.d/70-gapps.sh");
package\_extract\_dir("optional", "/tmp");
package\_extract\_file("install-optional.sh", "/tmp/install-optional.sh");
set\_perm(0, 0, 0777, "/tmp/install-optional.sh");
run\_program("/tmp/install-optional.sh", "");
show\_progress(1, 15);
ui\_print("Limpiando y configurando metadatos...");
set\_metadata\_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/priv-app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/etc/permissions", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/etc/preferred-apps", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata("/system/etc/g.prop", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/framework", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/lib", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/usr/srec/en-US", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
set\_metadata\_recursive("/system/vendor/pittpatt", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object\_r:system\_file:s0");
run\_program("/sbin/busybox", "umount", "/system");
ui\_print("¡Instalación completa!");

Por supuesto, podemos omitir los comentarios/salida de depuración, y esencialmente terminar con estos pasos. Supongo que has desempaquetado el contenido del archivo .zip en algún lugar de tu dispositivo, y estás en una shell (terminal o adb shell) con permisos de root (su) para comenzar:

  1. mount -o remount,rw /system (line 2)
  2. si los archivos listados en la línea 4 existen: rm -f por cada uno de ellos
  3. copiar todo el contenido de la carpeta system/ del archivo .zip a /system (línea 5)
  4. chmod 0755 /system/addon.d/70-gapps.sh (línea 6)
  5. (aplicar los pasos anteriores en las líneas 7-9)
  6. sh /tmp/install-optional.sh (línea 10)

Ahora se vuelve un poco más difícil (para principiantes) interpretar los comandos set_metadata_recursive. Explicaré esto en el primero (línea 13):

/system/addon.d debe ser propiedad de uid 0 y gid 0, los permisos de archivo deben ser 0755 (dmode es modo de directorio, fmode modo de archivo), los atributos de SELinux son u:object_r:system_file:s0. Podrías haber notado que he omitido dos columnas: No tengo ni idea de qué significa "capabilities", 0x0, así que no puedo explicarlo (si alguien lo sabe, por favor comenta). Así que hagamos eso:

chown -R root:root /system/addon.d   # -R es recursivo, root es id de usuario/grupo 0
chmod -R 755 /system/addon.d         # como dmode y fmode son iguales, podemos hacer eso
# en este lugar falta: propiedades SELinux. Nunca he tratado con esas

Si como en la línea 14 fmode y dmode son diferentes, también tendrás que cuidar eso. Aplica dmode como arriba, y síguelo con un find

-type f -print0 | xargs chmod , reemplazando

por el primer argumento de set_metadata_recursive, y por el fmode correspondiente.

Finalmente, vuelve a montar /system solo lectura nuevamente: mount -o remount,ro /system - o simplemente reinicia (de todos modos tendrás que hacerlo), lo cual también se encargará de eso.

He omitido el material de SELinux debido a la falta de conocimiento. Es muy probable que funcione sin eso, pero podría ser bueno hacerlo para una seguridad adicional :)

0 votos

Algunas GApps vienen con el archivo gapps-remove.txt también. Uno puede compararlo con los archivos que tiene o va a copiar en /system. Eso les puede ayudar a saber lo que les puede estar faltando.

0voto

Stephan Puntos 71

Etiquetas SElinux que estableces con el comando "chcon" y puedes verificar el resultado usando "ls -laZ".

Para: set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");

será: chcon "u:object_r:system_file:s0" /system/addon.d

Puedes verificar esto emitiendo: ls -laZ /system/addon.d

fuente para el uso de "chcon": https://books.google.pl/books?id=AKbNBgAAQBAJ&pg=PA101&lpg=PA101&dq=%22u:object_r:system_file:s0%22&source=bl&ots=MbpesnKLkI&sig=ACfU3U2sJc-vYndDkUOk1Tru42hrcuPyUQ&hl=pl&sa=X&ved=2ahUKEwjqwqKiwZDnAhWiAxAIHZH8AGAQ6AEwAXoECAkQAQ#v=onepage&q=%22u%3Aobject_r%3Asystem_file%3As0%22&f=false

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X