oreo - android pie
Empuje mi apk a/system/app (14)
Aparentemente, no hay suficiente espacio para su aplicación en el montaje "/ system". Puede verificarlo con el comando "adb shell df".
Para resolver este problema, debe configurar adecuadamente el parámetro de tamaño de partición al iniciar su AVD de esta manera:
emulator.exe -avd <your avd name> -partition-size 512
¿Cómo puedo enviar mi paquete de aplicaciones a la carpeta "/ system / app" del emulador de Android?
Ya he intentado usar:
"adb push myApk.apk / system / app"
y me da esto:
"failed to copy: ... No space left on device"
Aunque desde la configuración -> sdCard & Phone Storage, obtengo 37Mb de espacio libre interno.
El punto central de esta necesidad es
relacionado con los permisos.
Necesito tener el permiso INSTALL_PACKAGES
y sé que al poner mi solicitud allí,
En / system / app, obtengo ese permiso.
Compruebe que tiene suficientes inodos, puede tener suficiente memoria pero no suficientes inodos, es decir, marcador de posición de archivo.
El siguiente archivo por lotes instalará cualquier archivo apk en la carpeta en el directorio / system / app. Monta la unidad del sistema como rw, luego copia los archivos.
Para usarlo, coloque el siguiente código en un editor de texto y guárdelo como install.bat en una máquina con Windows. Luego haga doble clic en el archivo por lotes para instalar cualquier archivo APK que se encuentre en la misma carpeta que el archivo por lotes.
NOTA: No puede volver a montar la partición del sistema a menos que tenga una raíz en el dispositivo. Lo he usado principalmente en el emulador, que por defecto es root (y era la pregunta original), pero el concepto debería ser el mismo en un dispositivo físico.
@ECHO OFF %~d0 CD %~dp0 adb root adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system adb shell rm /system/app/SdkSetup.apk for /f %%a IN (''dir /b *.apk'') do adb push %%a /system/app/.
Estos son los pasos si está instalando un apk del sistema para dispositivos Android 5.0 o posteriores. Para versiones anteriores usa la respuesta de posaidong.
Renombra tu archivo apk a base.apk
$ adb push base.apk /sdcard/
Entra en la consola y obtén el shell.
$ adb shell
Cambiar al superusuario. Si su dispositivo no está rooteado, primero consíguelo. (Si no sabes cómo hacerlo, solo Google).
$ su
Vuelva a montar la partición del sistema con el permiso WRITE.
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Cree un directorio de prueba dentro de la carpeta / system / app. (o puede usar / system / priv-app también). Idealmente, este nombre de carpeta debería ser el nombre de la aplicación. Por ahora, vamos a usar Test
$ mkdir /system/app/Test
Requiere 755 permisos para este directorio
$ chmod 755 /system/app/Test
Copia tu base.apk dentro
$ cat /sdcard/base.apk > /system/app/Test/Base.apk
Remout / partición del sistema de nuevo a READ-ONLY, y salir
$chmod 644 /system/app/Test/Base.apk
Requiere 644 permisos para este directorio
$ mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
$ exit
Reinicie su dispositivo. Cuando se complete el arranque, debería ver un mensaje del sistema como la actualización de Android ...
Incluso antes de adb remount
, debe cambiar los permisos para el / system en el shell adb. Puedes usar chmod
para cambiar los permisos.
Me he encontrado con esta situación varias veces al copiar archivos apk en la partición /system
y finalmente pude resolverlo usando los siguientes pasos:
Compruebe la espacio libre en la partición
/system
usando df desde adb shell . Lo más probable es que el espacio libre sea menor que el tamaño del archivo apk.Filesystem Size Used Free Blksize /dev 1.3G 80.0K 1.3G 4.0K /sys/fs/cgroup 1.3G 12.0K 1.3G 4.0K /mnt/secure 1.3G 0.0K 1.3G 4.0K /mnt/asec 1.3G 0.0K 1.3G 4.0K /mnt/obb 1.3G 0.0K 1.3G 4.0K /system 3.5G 3.5G 10.0M 4.0K /efs 15.7M 2.8M 12.9M 4.0K /cache 192.8M 736.0K 192.1M 4.0K /data 25.5G 12.7G 12.8G 4.0K /persdata/absolute 4.9M 120.0K 4.8M 4.0K /sbfs 10.8M 8.0K 10.7M 4.0K /mnt/shell/knox-emulated 25.5G 12.7G 12.8G 4.0K /mnt/shell/privatemode 25.4G 12.7G 12.7G 4.0K /mnt/shell/emulated 25.4G 12.7G 12.7G 4.0K /preload 5.8M 3.3M 2.5M 4.0K
Use du / system para obtener los tamaños de cada carpeta y archivo en la partición
/system
. Organice la salida en orden descendente de tamaño (s) para obtener (algo similar):4091840 /system/ 1199416 /system/app 964064 /system/priv-app 558616 /system/lib64 373320 /system/lib 206624 /system/vendor 170952 /system/app/WebViewGoogle 148824 /system/app/WebViewGoogle/lib 125488 /system/voice 125480 /system/voice/embedded 122880 /system/app/Chrome 106520 /system/framework 102224 /system/priv-app/Velvet 96552 /system/app/SBrowser_3.0.38 93936 /system/vendor/lib64 93792 /system/vendor/lib64/egl 92552 /system/tts 92512 /system/tts/lang_SMT ...
Elimine los archivos innecesarios de
/system/voice/embedded
,/system/tts/lang_SMT
(para soporte de idioma / locale) y / u otras carpetas para liberar suficiente espacio en la partición/system
para alojar el nuevo archivo apk. Es posible que eliminar archivos en particiones que no sean/system
no ayude en este escenario. ( Nota : este paso puede requerir privilegios ROOT y remontaje/system
partición del/system
en modo de lectura / escritura usando mount -o rw, remount / system )
Normalmente, la única forma de obtener acceso al directorio "/ system /" es tener un dispositivo rooteado. No sé exactamente si eso es necesario para el emulador. Ese podría ser tu problema.
Primero debe ejecutar adb remount
, luego debe permitirle adb push
to /system
folder
Puedo instalar un APK en /system/app
con los siguientes pasos.
Empuje APK a la tarjeta SD.
$ adb push SecureSetting.apk /sdcard/
Entra en la consola y obtén el shell.
$ adb shell
Cambiar al superusuario. Si su dispositivo no está rooteado, primero consíguelo. (Si no sabes cómo hacerlo, solo Google).
$ su
Vuelva a montar la partición del sistema con el permiso WRITE.
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Administre su APK desde
/sdcard/
to/system/
, algunos tipos obtienen un error con el comandocp
debido a quecp
no es compatible. Así que usa elcat
lugar.$ cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk
Remout
/system
partición del/system
nuevo a READ-ONLY, y salir$ mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system $ exit
Luego reinicie su dispositivo, el APK debería haberse instalado en /system/app
.
Si simplemente desea instalarlo, siempre puede hacer: adb install myApk.apk
.
Si su apk es lo suficientemente pequeño como para presionar, intente nuevamente. Me encontré con el mismo problema y probé dos veces para enviar los apks a / system / app /
Tienes que montar el sistema como lectura / escritura y luego empujar la aplicación.
Esto se responde en esta pregunta: presione .apk hacia / system / app / en HTC HERO
Utilice los siguientes comandos de su superusuario ADB shell. Copie el APK de su aplicación en su tarjeta SD o almacenamiento interno.
$ adb shell
$ su
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
$ cp /sdcard/<Your_APK_PATH> /system/app/file_name_comes_here.apk
$ chmod 644 /system/app/<YourAPK>.apk
A continuación, reinicie el dispositivo
configuraciones -> sdCard y almacenamiento del teléfono dice acerca de / carpeta de datos.
/ el sistema se monta por separado y creo que no hay forma de escribir allí a menos que hagas tu propia compilación de Android.
Ver los montajes corriendo
adb shell
# df