¿Cómo instalo correctamente una aplicación del sistema dado su .apk?

30

Eliminé una aplicación del sistema (com.android.mms) y tengo el .apk necesario para restaurarla, sin embargo, no se instalará a través de los canales estándar (ejecutar el .apk me da "aplicación no instalada"). ¿Cuál es la forma correcta de instalar el .apk de una aplicación del sistema?

Dmitriy Likhten
fuente

Respuestas:

41

Tendrá que empujar el .apk al teléfono a la partición del sistema a la carpeta /system/appo /system/priv-appcuando use Android 4.3 adb. Puede encontrar más información adbaquí: http://android-dls.com/wiki/index.php?title=ADB .

Para poder escribirle /system, probablemente tenga que volver a montarlo lectura-escritura:

adb shell
su
mount -o rw,remount /system

O hágalo completamente desde el ADB del host:

adb root
adb remount

Ahora puedes colocar el .apk:

adb push my-app.apk /sdcard/
adb shell
su
cd /sdcard
mv my-app.apk /system/app
# or when using Android 4.3 or higher
mv my-app.apk /system/priv-app

Luego, si las banderas aún no están configuradas, cambie los permisos. Todas las aplicaciones del sistema deben tener los permisos rw-r--r--. También puede cambiarlos a través de ADB con el comando chmod 644 /path_to/your_file. Aunque es bastante viejo, esto puede ayudar

Después de haber colocado el .apkdebe reiniciar su dispositivo. Por ejemplo con adb reboot.

jonesdavide
fuente
Sí, pensé que este sería el camino a seguir, lo intenté, dice una mala firma. Utilicé el Mms.apk que es parte de la rom .zip que utilicé para instalar el Android actual en ejecución.
Dmitriy Likhten
2
Hermosa respuesta Gracias. Un comentario, no pude "mv my-app.apk / system / app". Recibí un error "falló en 'XXX.apk' - Enlace entre dispositivos". Pude CP y RM el apk como se describe en android.stackexchange.com/questions/75920/…
Michael Levy
1
Considere usarlo en cplugar de hacerlo mvporque se está moviendo entre diferentes sistemas de archivos y no es compatible con todas las mvversiones
Andrés
esto no actualiza los permisos de Android con la ubicación de la apk, que se requiere para los paquetes que usan la apk
paIncrease
5

Carl Parker escribe sobre esto en Android Authority :
(parcialmente reproducido aquí en caso de que la publicación original no funcione)

Para aplicaciones instaladas en el dispositivo

  • Suponiendo que haya instalado la aplicación en su dispositivo, vaya al enlace de Google Play Store de la aplicación y tome nota de las palabras después de "? Id =" e ignore el resto.
  • Conecte su dispositivo a la computadora mediante un cable USB.
  • Abra el símbolo del sistema en su computadora y escriba los siguientes comandos:
adb remount 
adb shell 
su 
cd /data/app/ 
  • Escriba el comando ls appfilename*(donde "nombre del archivo de la aplicación" es el ID de la aplicación en Google Play Store; asegúrese de incluir el asterisco al final). Este comando mostrará el nombre de archivo APK completo de la aplicación.
  • Ingrese el siguiente comando:
mv apk_full_filename_here /system/app/apk_full_filename_here 
exit 
exit 
adb reboot 
  • El dispositivo ahora se reiniciará. Su aplicación ahora se guarda como una aplicación del sistema.

Para aplicaciones cuyos APK están en el disco duro de la PC

  • Abra un símbolo del sistema en su computadora y navegue hasta donde se encuentra el archivo APK.
  • Habilite la depuración de USB en su dispositivo y conéctelo a la computadora mediante un cable USB.
  • Ingrese los siguientes comandos:
adb remount
adb push apk-filename-here /system/app/
adb shell chmod 644 /system/app/apk-filename-here
adb reboot

Su teléfono se reiniciará automáticamente. Su aplicación ahora se guardará como una aplicación del sistema.

Mindwin
fuente
3

tenga en cuenta que cuando juegue con adb, instalará aplicaciones a través del nombre del archivo del paquete (es decir, en el símbolo del sistema, escriba> adb install myFile.apk)

pero los desinstalará a través de su nombre de paquete (> adb uninstall com.this.that.otherthing)

No podrá instalar un paquete hasta que haya desinstalado su predecesor.

Ayudará a agregar adb a su RUTA para que pueda ir al directorio donde está el archivo .apk y escribir adb install myFile.apk.

Dr.Dredel
fuente
¡Gracias! No sabía acerca de la mecánica de desinstalación :)
Dmitriy Likhten
No lo he probado con las aplicaciones del sistema, pero para las aplicaciones habituales /system/bin/pm(Package Manager) la utilidad funcionó para mí. Me gusta pm install -r myFile.apk( -rpara "reemplazar"). De esta manera, no necesita desinstalar ni conocer el nombre del paquete.
Alexander Malakhov el
0

Necesita tener instalado el SDK de Android (o al menos una herramienta que se llama adb). Además, debe permitir "Instalaciones no comerciales" en su dispositivo.

Una vez hecho esto, cambie a la carpeta que contiene el archivo con una consola. Luego conecta tu teléfono (a través de USB) y ejecutaadb install appname.apk

teclados
fuente
Ver los comentarios de otras respuestas. Ya tengo habilitadas las instalaciones que no son de mercado desde que instalé swype :)
Dmitriy Likhten