Skip to Content

HOW I TESTED POWER APPS ON ANDROID WITHOUT INSTALLING THEM ON MY PERSONAL DEVICE

June 26, 2026
Rohan Wadiwala

As a Power Platform Architect, testing mobile experiences is part of my day-to-day life. Whether it’s a Canvas App for field users or a Model-driven App for business processes, sooner or later, someone asks:

“But how does it look on Android?”

Normally, the answer would be simple: install the Power Apps mobile app and test it.

Unfortunately, real life is rarely that cooperative.

The Mobile Testing Dilemma

Installing the Power Apps app on my personal phone wasn’t really an option because of a few familiar challenges:

  • Multiple Microsoft account conflicts (MDM-managed work/school accounts mixed with personal accounts)
  • Company policies restricting enterprise applications on personal devices
  • The general headache of juggling multiple environments and tenants on a single device

I wanted a clean, isolated Android environment dedicated to testing—without carrying around a collection of phones like a mobile device museum.

That’s when I discovered Waydroid.

What is Waydroid?

Waydroid is a Linux container-based Android environment that runs a full Android system natively on Linux.

Unlike traditional Android emulators that rely on heavyweight virtual machines, Waydroid runs inside containers, making it surprisingly lightweight and responsive.

For Power Platform developers, that opens up some useful possibilities:

  • Test Canvas Apps using Android-style touch interactions
  • Validate Model-driven App layouts on mobile screens
  • Reproduce mobile-specific behaviors and UI quirks
  • Keep work testing completely separate from personal devices

In short, it gives you a dedicated Android test environment without requiring actual Android hardware.

The Plot Twist: SurfaceFlinger and Composer Crashes

Of course, no technical journey is complete without a little unexpected drama.

After initializing Waydroid with Google Apps (GApps), I launched it expecting a shiny Android home screen.

Instead, I was greeted by a black screen and two not-so-friendly crash dialogs:

Not exactly the Android experience I was hoping for.

Digging through the logs revealed crashes originating from:

  • libEGL_mesa.so
  • libGLESv2_mesa.so
  • Waydroid’s hardware composer module (hwcomposer)

At this point, the issue started looking less like an Android problem and more like a graphics stack disagreement.

Root Cause: The Dual-GPU Problem

My laptop uses a hybrid graphics setup:

  • AMD Radeon 680M integrated GPU
  • NVIDIA RTX 3050 Mobile dedicated GPU

While this combination is fantastic for balancing battery life and performance, it occasionally creates confusion for software expecting a straightforward graphics pipeline.

Waydroid was attempting to use hardware-accelerated rendering through Mesa, but the interaction between the Android container, Mesa libraries, and the dual-GPU setup caused the rendering stack to collapse before the Android UI could even appear.

The result?

A permanently black screen.

The Fix: Force Software Rendering

After experimenting with various Mesa driver overrides—including iris and radeonsi—I eventually found the configuration that worked reliably.

The solution was to disable hardware GPU rendering and force Waydroid to use SwiftShader, Google’s CPU-based software renderer.

Step 1: Edit Waydroid’s Base Properties

Open the configuration file:

$ sudo nano /var/lib/waydroid/waydroid_base.prop

Add or update the following properties:

ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
ro.hardware.vulkan=default

Step 2: Restart Waydroid

$ sudo systemctl restart waydroid-container.service
$ waydroid session stop
$ waydroid session start
$ waydroid show-full-ui

Result

  • Android UI launched successfully
  • Power Apps loaded correctly
  • Mobile testing resumed without touching my personal phone

Sometimes the best GPU optimization is simply convincing the GPU to take a break. 😉

When You’re Likely to Encounter This

This workaround is particularly relevant if you’re running:

  • A hybrid GPU laptop (AMD + NVIDIA or Intel + NVIDIA)
  • Mesa graphics drivers on Linux
  • Ubuntu, Fedora, Arch Linux, or similar distributions
  • Waydroid with GApps installed
  • Full Android UI mode rather than command-line-only usage

If that sounds familiar, SwiftShader may save you several hours of troubleshooting.

Why This Matters for Power Platform Developers

1. No Device Fleet Required

You don’t need a drawer full of Android phones to validate mobile experiences.

A Linux workstation and Waydroid can cover a surprising amount of early-stage testing.

2. Clean Separation of Work and Personal Life
  • No corporate accounts on personal devices
  • No MDM enrollment headaches
  • No accidental notifications from three different Microsoft tenants at once
3. Faster Development Cycles
  • Deploy.
  • Test.
  • Adjust.
  • Repeat.

The feedback loop becomes much shorter when your Android test environment lives directly on your development machine.

4. Easier UI Validation

Before handing an app over for user acceptance testing, you can quickly verify:

  • Responsive layouts
  • Touch interactions
  • Form rendering
  • Navigation behavior
  • Mobile-specific visual issues

A Quick Reality Check

Waydroid is incredibly useful, but it’s important to remember what it is—and what it isn’t.

It’s an excellent tool for:

  • UI validation
  • Functional testing
  • Early-stage debugging
  • Layout verification

However, it should complement—not replace—testing on real devices.

Physical devices still matter when evaluating:

  • Performance under real-world conditions
  • Device-specific hardware behavior
  • Camera integrations
  • GPS functionality
  • Push notifications
  • Offline scenarios

Think of Waydroid as your first testing checkpoint, not your final sign-off.

Final Takeaway

If you’re a Power Platform developer stuck in the classic “I can’t install Power Apps on my phone” situation, Waydroid is a surprisingly effective alternative.

And if Waydroid greets you with mysterious SurfaceFlinger and composer crashes on a Linux machine with hybrid graphics, forcing SwiftShader software rendering may be the missing piece.

It won’t replace real-device testing, but for rapid iteration, UI validation, and day-to-day Power Apps development, it can dramatically simplify your workflow.

Plus, it’s always satisfying when the solution to a graphics problem is simply telling the graphics hardware to sit this one out.

About the author

Manager | India
Rohan is a Solution Architect for MS Stack in Sogeti India Microsoft Practice & Sogeti Europe. He has 13 years of professional experience with 4 years in Architect role covering all aspects of software life cycles on Microsoft & DevOps platform.

Leave a Reply

Your email address will not be published. Required fields are marked *

Slide to submit