Android Studio: adb – INSTALL_FAILED_INSUFFICIENT_STORAGE

By | 03/04/2019

Proceeding fighting with our UI auto-tests 🙂

Two previous posts were really useful this time – Android Studio: установка на Linux и работа с Android Virtual Devices and Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль.

In general – tests works fine but sometimes gives me interesting issues.

This time out QA-engineer sent me the new error to our Slack:

[simterm]

[debug] [W3C] Encountered internal error running command: Error executing adbExec. Original error: 'Command '/android/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 install -r -g /home/projectname/projectnameMenBuilds/projectnameMen-stage.apk' exited with code 1'; Stderr: 'adb: failed to install /home/projectname/projectnameMenBuilds/projectnameMen-stage.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]'; Code: '1'
[debug] [W3C] Error: Command '/android/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 install -r -g /home/projectname/projectnameBuilds/projectnameMen-stage.apk' exited with code 1
[debug] [W3C]     at ChildProcess.proc.on.code (/home/projectname/node_modules/teen_process/lib/exec.js:94:19)
[debug] [W3C]     at emitTwo (events.js:126:13)
[debug] [W3C]     at ChildProcess.emit (events.js:214:7)
[debug] [W3C]     at maybeClose (internal/child_process.js:925:16)
[debug] [W3C]     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
[HTTP] <-- POST /wd/hub/session 500 2312 ms - 1165
[HTTP] 
[HTTP] --> POST /wd/hub/session
[HTTP]

[/simterm]

The first conspicuous message – “Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]’; Code: ‘1’“.

On the first Google request with the “android INSTALL_FAILED_INSUFFICIENT_STORAGE” I found this>>> question on the StackOverflow and one answer there, describing almost the same issue – here>>>.

Let’s check.

Run the emulator used in tests:

[simterm]

projectname@projectname-ci:~$ emulator -avd Nexus_5X_API_26

[/simterm]

Run shell in there:

[simterm]

projectname@projectname-ci:~$ adb shell
generic_x86:/ $

[/simterm]

Check available space:

[simterm]

1|generic_x86:/ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          611M  4.6M  606M   1% /
tmpfs           756M  488K  756M   1% /dev
/dev/block/vda1 2.4G  1.4G  0.9G  59% /system
/dev/block/vde1  90M   35M   53M  40% /vendor
tmpfs           756M     0  756M   0% /mnt
/dev/block/vdb   61M   56K   60M   1% /cache
/dev/block/dm-0 1.9G  1.7G  148M  93% /data
/data/media     1.9G  1.7G  148M  93% /storage/emulated

[/simterm]

148M 93% /data – 148 MB, obviously not too much.

Haven’t looked at the apk-file with our application used, but anyway – too low free space.

Try to check the /data content:

[simterm]

1|generic_x86:/ $ ls -l /data/                                                                                                                                                                                                               
ls: /data/: Permission denied

[/simterm]

Aha…

Try with the root:

[simterm]

projectname@projectname-ci:~$ adb root
adbd cannot run as root in production builds

[/simterm]

Well – okay. There are solutions about how to get root access – but I don’t want to waste time now with it.

Just will increase disk used for this device – there is enough available space on the build-host.

Next Google search with the “android emulator disk space“, led me to the Quick Tip: Increase the storage size of your Android Emulator post.

Find device’s directory used:

[simterm]

projectname@projectname-ci:~$ ls -l ~/.android/avd/
total 16
drwxrwxr-x 5 projectname projectname 4096 бер  4 11:35 Nexus_5X_API_26.avd
-rw-rw-r-- 1 projectname projectname  127 лис 20 17:50 Nexus_5X_API_26.ini
drwxrwxr-x 4 projectname projectname 4096 гру 18 18:44 test.avd
-rw-rw-r-- 1 projectname projectname  105 лис 19 17:18 test.ini

[/simterm]

And the ~/.android/avd/Nexus_5X_API_26.avd:

[simterm]

projectname@projectname-ci:~$ ls -la ~/.android/avd/Nexus_5X_API_26.avd/
total 2861472
drwxrwxr-x 5 projectname projectname       4096 бер  4 11:35 .
drwxrwxr-x 4 projectname projectname       4096 бер  4 11:41 ..
-rw-rw-r-- 1 projectname projectname         96 бер  4 11:35 AVD.conf
-rw-r--r-- 1 projectname projectname   69206016 бер 12  2018 cache.img
-rw-r--r-- 1 projectname projectname   42598400 бер  4 11:35 cache.img.qcow2
-rw-rw-r-- 1 projectname projectname       1173 лют 14 11:10 config.ini

[/simterm]

Here is the config.ini mentioned in the post above:

[simterm]

projectname@projectname-ci:~$ cat ~/.android/avd/Nexus_5X_API_26.avd/config.ini | grep data
disk.dataPartition.size=2G

[/simterm]

Set a new value here, let’s say – 5 GB:

...
disk.dataPartition.size=5G
...

Run an emulator again:

[simterm]

projectname@projectname-ci:~$ emulator -avd Nexus_5X_API_26
emulator: WARNING: userdata partition is resized from 2048 M to 5120 M

[/simterm]

Shell:

[simterm]

projectname@projectname-ci:~$ adb shell
error: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.

[/simterm]

Er… Okay – kill theavd:

[simterm]

projectname@projectname-ci:~$ adb kill-server

[/simterm]

And shell again:

[simterm]

projectname@projectname-ci:~$ adb shell
* daemon not running; starting now at tcp:5037
* daemon started successfully

[/simterm]

Check disk space now:

[simterm]

generic_x86:/ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          611M  4.6M  606M   1% /
tmpfs           756M  488K  756M   1% /dev
/dev/block/vda1 2.4G  1.4G  0.9G  59% /system
/dev/block/vde1  90M   35M   53M  40% /vendor
tmpfs           756M     0  756M   0% /mnt
/dev/block/vdb   61M   56K   60M   1% /cache
/dev/block/dm-0 4.8G   88M  4.7G   2% /data
/data/media     4.8G   88M  4.7G   2% /storage/emulated

[/simterm]

Run tests – and everything works now.