Minor improvement in Host Renderer for Confirmation UI

1. Added accessibility features
  - magnified and inverted

2. Separated session-specific initialization code from
ConfUiRenderer constructor
  - The object is created before the host service reads
  and interprets the kStart command. So initialization
  should be deferred to the point where the kStart command
  is received

3. Refresh the whole frame rather than the fonts
  - Before the frame buffer was shared across the sessions.
  Each session for now has similar layout. So, we re-used
  the buffer and re-draw the fonts only. Now, we assign a
  buffer per session, so re-drawing does not give much benefits.
  Remove the complication caused by fonts-only refreshing.

Bug: 201691842
Test: Run locally, Vts test

Change-Id: Ibd193f2abc7896190133db5bcedcc7cf70574af7
5 files changed
tree: a22811e938494acbac601767a2f013efd3597587
  1. apex/
  2. build/
  3. common/
  4. guest/
  5. host/
  6. recovery/
  7. shared/
  8. tests/
  9. tools/
  10. vsoc_arm64/
  11. vsoc_arm64_only/
  12. vsoc_arm_only/
  13. vsoc_x86/
  14. vsoc_x86_64/
  15. vsoc_x86_64_only/
  16. vsoc_x86_noapex/
  17. vsoc_x86_only/
  18. .clang-format
  19. Android.bp
  20. Android.mk
  21. AndroidProducts.mk
  22. CleanSpec.mk
  23. default-permissions.xml
  24. dtb.img
  25. fetcher.mk
  26. host_package.mk
  27. METADATA
  28. multiarch-howto.md
  29. OWNERS
  30. PREUPLOAD.cfg
  31. README.md
  32. required_images
  33. TEST_MAPPING
README.md

Cuttlefish Getting Started

Try Cuttlefish

  1. Make sure virtualization with KVM is available.

     grep -c -w "vmx\|svm" /proc/cpuinfo
    

    This should return a non-zero value. If running on a cloud machine, this may take cloud-vendor-specific steps to enable. For Google Compute Engine specifically, see the GCE guide.

ARM specific steps:

  • When running on an ARM machine, the most direct way is to check for the existence of /dev/kvm. Note that this method can also be used to confirm support of KVM on any environment.
  • Before proceeding to the next step, please first follow the guide to adjust APT sources.
  1. Download, build, and install the host debian package:

    sudo apt install -y git devscripts config-package-dev debhelper-compat
    git clone https://github.com/google/android-cuttlefish
    cd android-cuttlefish
    debuild -i -us -uc -b
    sudo dpkg -i ../cuttlefish-common_*_*64.deb || sudo apt-get install -f
    sudo usermod -aG kvm,cvdnetwork $USER
    sudo reboot
    

    The reboot will trigger installing additional kernel modules and applying udev rules.

  2. Go to http://ci.android.com/

  3. Enter a branch name. Start with aosp-master if you don‘t know what you’re looking for

  4. Navigate to aosp_cf_x86_64_phone and click on userdebug for the latest build

  5. Click on Artifacts

  6. Scroll down to the OTA images. These packages look like aosp_cf_x86_64_phone-img-xxxxxx.zip -- it will always have img in the name. Download this file

  7. Scroll down to cvd-host_package.tar.gz. You should always download a host package from the same build as your images.

  8. On your local system, combine the packages:

    mkdir cf
    cd cf
    tar xvf /path/to/cvd-host_package.tar.gz
    unzip /path/to/aosp_cf_x86_64_phone-img-xxxxxx.zip
    
  9. Launch cuttlefish with:

$ HOME=$PWD ./bin/launch_cvd

  1. Stop cuttlefish with:

$ HOME=$PWD ./bin/stop_cvd

Debug Cuttlefish

You can use adb to debug it, just like a physical device:

$ ./bin/adb -e shell

Launch Viewer (WebRTC)

When launching with ---start_webrtc (the default), you can see a list of all available devices at https://localhost:8443 . For more information, see the WebRTC on Cuttlefish documentation.

Launch Viewer (VNC)

When launching with --start_vnc_server=true , You can use the TightVNC JViewer. Once you have downloaded the TightVNC Java Viewer JAR in a ZIP archive, run it with

$ java -jar tightvnc-jviewer.jar -ScalingFactor=50 -Tunneling=no -host=localhost -port=6444

Click “Connect” and you should see a lock screen!