uncrypt: Communicate via /dev/socket/uncrypt.

We used to rely on files (e.g. /cache/recovery/command and
/cache/recovery/uncrypt_status) to communicate between uncrypt and its
caller (i.e. system_server). Since A/B devices may not have /cache
partitions anymore, we switch to socket communication instead.

We will keep the use of /cache/recovery/uncrypt_file to indicate the OTA
package to be uncrypt'd though. Because there is existing logic in
ShutdownThread.java that depends on the existence of the file to
detect pending uncrypt works. This part won't affect A/B devices without
/cache partitions, because such devices won't need uncrypt service (i.e
the real de-encrypt work) anyway.

Bug: 27176738
Change-Id: I481406e09e3ffc7b80f2c9e39003b9fca028742e
2 files changed
tree: 6459344ce70a011cbf3352b6ebc872e808a0a93d
  1. Android.mk
  2. CleanSpec.mk
  3. NOTICE
  4. README.md
  5. adb_install.cpp
  6. adb_install.h
  7. applypatch/
  8. asn1_decoder.cpp
  9. asn1_decoder.h
  10. bootloader.cpp
  11. bootloader.h
  12. common.h
  13. default_device.cpp
  14. device.cpp
  15. device.h
  16. edify/
  17. etc/
  18. fonts/
  19. fuse_sdcard_provider.cpp
  20. fuse_sdcard_provider.h
  21. fuse_sideload.cpp
  22. fuse_sideload.h
  23. install.cpp
  24. install.h
  25. interlace-frames.py
  26. minadbd/
  27. minui/
  28. minzip/
  29. mtdutils/
  30. otafault/
  31. print_sha1.h
  32. recovery.cpp
  33. res-hdpi/
  34. res-mdpi/
  35. res-xhdpi/
  36. res-xxhdpi/
  37. res-xxxhdpi/
  38. roots.cpp
  39. roots.h
  40. screen_ui.cpp
  41. screen_ui.h
  42. tests/
  43. tools/
  44. ui.cpp
  45. ui.h
  46. uncrypt/
  47. unique_fd.h
  48. update_verifier/
  49. updater/
  50. verifier.cpp
  51. verifier.h
  52. wear_ui.cpp
  53. wear_ui.h
README.md

The Recovery Image

Quick turn-around testing

mm -j && m ramdisk-nodeps && m recoveryimage-nodeps

# To boot into the new recovery image
# without flashing the recovery partition:
adb reboot bootloader
fastboot boot $ANDROID_PRODUCT_OUT/recovery.img

Running the tests

# After setting up environment and lunch.
mmma -j bootable/recovery

# Running the tests on device.
adb root
adb sync data

# 32-bit device
adb shell /data/nativetest/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest/recovery_component_test/recovery_component_test

# Or 64-bit device
adb shell /data/nativetest64/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest64/recovery_component_test/recovery_component_test