0 votos

¿Cómo escribir un script que elimine un determinado conjunto de aplicaciones cada vez que se flashea un archivo de actualización?

Tengo un dispositivo LineageOS con MicroG, pero como la aplicación de mensajería por defecto no se puede desactivar tengo que quitarla cada vez que flasheo un archivo de actualización. Esto se está volviendo más y más tedioso a medida que aumentan las aplicaciones que tengo que eliminar en la actualización.

¿Cómo se escribe un script que elimine estas aplicaciones cada vez que se flashea para que los cambios de eliminación persistan? Algo así como addon.d pero eso es para hacer una copia de seguridad de las apps.

Editar : Ambas respuestas son correctas, la que he publicado y la de Death Mask Salesman. Acepté la de Death Mask Salesman porque es relevante para la pregunta, sin embargo la que publiqué resolvió mi problema.

0 votos

Llego un poco tarde a la fiesta, pero los scripts de addon.d no sólo sirven para hacer copias de seguridad. Suponiendo que la aplicación que desea eliminar sea, por ejemplo, AudioFX, podría escribir uno de estos scripts que ejecute rm -rf en /system/priv-app/AudioFX . Esto eliminaría AudioFX cada vez que se flashea una OTA.

0 votos

¡Gracias, Kuo! He corregido el formato y le he dado el visto bueno. Ahora limpiaré los comentarios. Considere la posibilidad de echar un vistazo a Adebar Sin embargo, encontrarás otros aspectos interesantes con él (como la documentación del dispositivo o los scripts de copia de seguridad que genera).

0 votos

@DeathMaskSalesman ¿Cómo escribirías algo así? Intenté algunas opciones pero no consigo hacerlo bien, al final me rendí y los quité manualmente en su lugar.

1voto

Deviprasad Das Puntos 1140

He intentado pm disable <app> , pm hide <app> y pm block <app> - pero todos ellos arrojan mensajes de error. Pero cuando intenté pm disable-user <app> ¡funciona! Y los cambios persisten después de reflashear, ¡así que es genial! ¡No necesito escribir un script después de todo!

0voto

Como alternativa a la otra respuesta, aporto un enfoque más definitivo, basado en addon.d y dirigido a la eliminación de aplicaciones del sistema.

Recuerde que, a diferencia del pm que puede revertirse a voluntad, las aplicaciones eliminadas con este método sólo pueden recuperarse comentando las líneas apropiadas en el script del depurador y volviendo a aplicar la actualización OTA.


Introducción

Cualquier script de shell en el /system/addon.d se ejecuta justo después de aplicar una actualización OTA. El orden de ejecución depende del número entero al principio del nombre de un archivo, ya que los scripts se evalúan en orden creciente.


El código

La eliminación de una aplicación del sistema es simplemente una cuestión de emitir rm -rf en el directorio principal de la aplicación. Así, podemos escribir un script para que estas eliminaciones se realicen sin problemas después de cada actualización.

Si, por ejemplo, queremos eliminar la acción Email app, nuestro script tendrá el siguiente aspecto

#!/sbin/sh

rm -rf "/system/app/Email"

Aquí, el #!/sbin/sh es una línea obligatoria que indica a TWRP qué programa evaluará el script. No la elimine.

rm -rf es un comando que se utiliza para eliminar a la fuerza lo que le sigue de forma recursiva. Así, rm -rf "/system/app/Email" elimina el /system/app/Email y todo lo que contiene, eliminando así la aplicación de correo electrónico por completo.

Para añadir más aplicaciones a la lista, basta con añadir más rm -rf según el ejemplo, sustituyendo /system/app/Email con la ruta de la aplicación que quieres eliminar.


Finalización de

Una vez que hayas terminado de escribir el guión, tendrás que copiarlo en /system/addon.d . Para que se ejecute, su nombre debe comenzar con un número entero, seguido de un guión. Para esta respuesta, la llamaré 99-debloat.sh lo que hace que se evalúe después de los otros scripts del addon.

Después de eso, es probable que tengas que cambiar los permisos y la propiedad del script. Para cambiar los permisos, utilice

chmod 755 /system/addon.d/99-debloat.sh

Para modificar la propiedad, utilice

chown 0.0 /system/addon.d/99-debloat.sh

Un ejemplo completo

El método descrito en esta respuesta es el que yo mismo utilizo; añadiré mi opinión personal 99-debloat.sh script aquí como referencia.

#!/sbin/sh

app="/system/app"
priv_app="/system/priv-app"

rm -rf $app/Calendar
rm -rf $app/Email
rm -rf $app/FM2
rm -rf $app/PicoTts
rm -rf $app/Stk
rm -rf $priv_app/FlipFlap
rm -rf $priv_app/Gallery2
rm -rf $priv_app/Snap
rm -rf $priv_app/WeatherProvider

1 votos

Eso es muy sencillo. Pensé que addon.d sólo toma un formato de código específico y no un script de shell regular. Esto es útil. Gracias por su ayuda.

0 votos

@KuoChongYii Tanto los scripts de addon como los de init son de shell; sólo hay que tener cuidado de que el intérprete sea /sbin/sh y no algo como /system/bin/sh .

0 votos

¿Cuál es la diferencia entre ambos? ¿Es el binario sh en system una construcción diferente de un binario sh en sbin?

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