Giter Site home page Giter Site logo

android_hardware_waydroid's Introduction

Waydroid

Waydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.

Overview

Waydroid uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a full Android system in a container and provide Android applications on any GNU/Linux-based platform.

The Android system inside the container has direct access to any needed hardware.

The Android runtime environment ships with a minimal customized Android system image based on LineageOS. The image is currently based on Android 11.

Documentation

Our documentation site can be found at docs.waydro.id

Reporting bugs

If you have found an issue with Waydroid, please file a bug.

Get in Touch

If you want to get in contact with the developers please feel free to join the Waydroid groups in Matrix or Telegram.

android_hardware_waydroid's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

android_hardware_waydroid's Issues

VNDK error: INCOMPATIBLE CHANGES

Get VNDK check error building lineage-os based images

build

hardware graphics related

[ 82% 78667/95331] //hardware/interfaces/graphics/bufferqueue/1.0:[email protected] header-abi-diff android.h
******************************************************
error: VNDK library: [email protected]'s ABI has INCOMPATIBLE CHANGES Please check compatibility report at: out/soong/.intermediates/hardware/interfaces/graphics/bufferqueue/1.0/[email protected]/android_arm64_armv8-a_vendor_shared/androi

runtime

display related

08-08 06:21:40.826    81    81 E SurfaceFlinger: [BootAnimation#0] rejecting buffer: bufWidth=1, bufHeight=1, front.active_legacy.{w=0, h=0}

hwcomposer: Provide window background without wp_viewporter

Currently, window background is provided only on compositors that support wp_viewporter, by creating a single pixel buffer and scaling it to fill the whole window. Compositors that don't support wp_viewporter, such as Mir, don't get window background (or, to be more exact, only get a single pixel of it in top left corner).

This could be improved by providing a full-sized buffer instead when viewporter support is missing.

See #12 and #33.

hwcomposer: dmabuf modifiers are ignored

According to a Smithay developer (drakulix) helping me with debugging why waydroid was submitting an external dmabuf when I requested from my compositor only non-external ones:

Essentially their hwcomposer needs to save modifiers.
And then their gralloc implementation has not to use gbm_bo_create:

bo = gbm_bo_create(gbm, width, height, format, usage);

But gbm_bo_create_with_modifiers and be given the list of supported modifiers for the format from the wayland code.
That way gbm will not return a buffer with a potentially external modifier.

I don't know how to build this project or I'd do the patch myself.

hwcomposer broken on wlroots

hwcomposer stopped working on sway (and other wlroots based compositors, e.g. cage) since build 20230923.

The last known good build is 20230916.

ebb2c3e...lineage-18.1

Relevant logs:

Control message: Could not find '[email protected]::IComposer/default' for ctl.interface_start from pid: 23 (/system/bin/hwservicemanager)
Unable to set property "ctl.interface_start" to "[email protected]::IComposer/default": error code: 0x20

To reproduce: cage waydroid session start


Environment info:

OS: Fedora release 40 (Rawhide) x86_64
Kernel: 6.6.0-0.rc2.20230922git27bbf45eae9c.23.fc40.x86_64
WM: swayfx 0.3.2 / cage 0.1.5-1.fc40 / wlroots 0.16.2-3.fc39
CPU: Intel i7-10510U
GPU: Intel CometLake-U GT2 [UHD Graphics]

hwcomposer: Implement xdg-activation

Implementing xdg-activation will make it possible to set StartupNotify field in Waydroid's desktop files, allowing various DEs to reliably display a splash screen when the app is being launched.

In order for it to work, waydroid.py will have to pass the content of XDG_ACTIVATION_TOKEN env var into the container for hwcomposer to pick up and report via Wayland.

hwcomposer: Transform pointer coordinates according to screen rotation

When the Android screen is rotated (for example, by running a landscape game on a portrait physical screen), mouse input isn't translated correctly - the pointer moves relative to Android's screen instead of actual screen and (unless the window is square) part of the Android screen isn't accessible at all.

To fix this, HWC should translate input pointer coordinates before sending them to InputFlinger.

Touch input isn't affected. Haven't tested tablet input.

audio: Add vanity name (and icon) for Waydroid client

Here's an example with chromium showing up in pavucontrol's Playback tab after playing some audio:
image
The same test with Waydroid:
image
It would be nice if it showed up similarly; a potential problem I see it shows up as type ALSA Playback (does't it require pulse though? or is this just whatever the HAL is naming things?) instead of just Playback so I'm not sure if it would support this kind of things.

Also possibly depends on waydroid/waydroid#341 for the icon to show up.

EDIT: Actually I remembered osu! shows up like this so at least the writer part should be customizable, don't know about the rest :/
image

[email protected] crashes on Ubuntu Touch

Adding as a tracking issue so this isn't forgotten about, @dos1 you've been doing a lot of hwcomposer related work recently so you should know about this I believe. What were those patches tested on?

I tested this on a Volla Phone 22 / Halium 11 running Ubuntu Touch 16.04 (2022-08-22 / devel channel) with Waydroid 1.2.0 and Android 11 images (so using lineage-18.1 branch here) provided by @aleasto.

He suspected Mir (2.9.0 even) is missing some required Wayland protocol support, specifically https://wayland.app/protocols/viewporter, so my question is: should I be able to see a similar crash on x86_64 when running the Mir 2.9.0 test compositor as seen in the logcat from the phone attached below?
waydroid-logcat.log
waydroid-log.log

Fwiw Ubuntu Touch uses a patched Mir 1.8.2 version and testing that outside of a device running Ubuntu Touch might be tricky or not possible (I've not tried yet).

Related(?): #12

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.