Install Scrcpy: Mirror Your Android Device Wired or Wirelessly

In this tutorial we will be looking at how you can mirror your Android device. You might have been using Vysor but it is just ugly and lags. And also it costs for you to use it without ads. So here we will look how to install the alternative scrcpy to mirror your Android device.

To be honest I have never really used the Vysor. I have used ADB to wirelessly connect and controlled my device manually. But it’s really painful when you have to jump back and forth. It’s just so unproductive doing that. Let us see how scrcpy changes this for us.

Currently I have this article available for Ubuntu only. I will soon update it for windows users.

Why use scrcpy ?

Before diving right into the installation part let me provide you some insight on why you must use scrcpy.

Scrcpy is an application which mirrors your Android device via. ADB over wired or wireless connection. And the most important bit is that it doesn’t require any rooting.

It is free and open source. It is really light and doesn’t have much overhead. It’s response time is quick claims are 30 ms – 70 ms. And it doesn’t install any additional application in your Android device. It also launches quickly.

Besides performance and quality are top notch. There are no lagging issues whatsoever. And you can adjust the transmission rate to make it more smooth or good looking.

Now let us look at how to install it.

Android device must be at least Lollipop ( SDK 21 ) for this to work.

Also Read : Get Full Address From Location Coordinates in Android


Installing scrcpy

We can quickly get the package from the repository. But I have run into issues while doing so.

The ADB versions must match exactly or else you cannot push APKs from Android Studio. There will be endless kill server and start server where between two separate ADB versions. Which I have faced during my first encounter with scrcpy.

Let us just install scrcpy to avoid that by simply building it from source. The installation part is below but you must follow along to install it.

So what then ? Let us compile from the source. Don’t worry I will guide you.

Setting up prerequisites

We have to get a bunch of dependencies before we can start with the compilation.

Run the following commands to get the runtime dependencies.

sudo apt install ffmpeg libsdl2-2.0-0Code language: Bash (bash)

If you have already got the dependencies you will get something like below.

Also Read : Learn to Implement Run Length Encoding in Java


Making ADB available

Assuming you are an Android developer. Because as a normal user these steps are unnecessary. You can follow here to just set it up for normal use.

Also assuming the default method did not work because of conflicting ADB versions. Because you have the latest ADB installed because of Android Studio. This might cause issue sometimes hence we are building the app from source.

If you don’t see something like below when you type adb in your terminal. You must export adb path. Let us just do that and update PATH variable.

Copy the platform-tools directory path. And add it to end of the file ~/.bashrc.

export PATH="$HOME/Android/Sdk/platform-tools/:$PATH"Code language: Bash (bash)

You obviously have to replace the path with your own path.

Once that’s done do source ~/.bashrc to refresh the variables for current bash session. You must do this every time you update something in ~/.bashrc.

Also Read : Learn EventBus, The LocalBroadcastManager Alternative


For client build

We must also get compile time dependencies before we can continue.

sudo apt install gcc git pkg-config meson ninja-build \
                 libavcodec-dev libavformat-dev libavutil-dev \
                 libsdl2-dev -yCode language: Bash (bash)

Everything should complete without any errors.

Let us move on to installing dependencies further.

For server build

If you develop Android applications. You might already have Java installed on your system.

To check if java is installed type the following command.

java -versionCode language: Bash (bash)

Before you install Java know that there is already a JDK included in the jre directory of your Android Studio installation. You can just export it like we have in the ADB section.

But if you want to install Java separately run the following command.

sudo apt install openjdk-8-jdkCode language: Bash (bash)

Also Read : Consume an API with Retrofit in Android


Updating meson

According to the docs it states that if you have Ubuntu prior 16.04 this will cause issue. But I was facing this issue even with 20.04. Let’s update meson.

Install pip3 if already installed it doesn’t matter.

sudo apt install python3-pip -y

Now install meson with the pip3. You can find the latest meson version from here. During writing this article it is 0.55.3 so I will be using that.

pip3 install 'meson==0.55.3'Code language: JavaScript (javascript)

You will see something like below. If you don’t have the expected version do export the path.

Also Read : 5 Productivity Tips and Tricks for Ubuntu


Setting up ANDROID_SDK_ROOT variable

Let us once again edit the ~/.bashrc to export the ANDROID_SDK_ROOT variable.

export ANDROID_SDK_ROOT="~/Android/Sdk"Code language: Bash (bash)

That’s pretty much it let’s get on with actually compiling from source.

Building and Installing scrcpy

Now that we have already installed our dependencies. We have only one more thing left to do. And that is building the program itself from the code.

Also Read : How to get current GPS location in Android


Cloning the project

Run the command below to clone the project in your $HOME directory.

git clone ~/scrcpyCode language: Bash (bash)

Now cd into the directory with cd ~/scrcpy.

Then finally run the command below to start compiling from the source.

Setting up build

meson x --buildtype release --strip -Db_lto=trueCode language: Bash (bash)

You will see something like below

Finally run the command

ninja -CxCode language: Bash (bash)

It will take some time because it will download and setup the gradle files for building. The time will depend on your internet speed.

The only error you might run into is ANDROID_SDK_ROOT not defined. And if you do just check if you have configured it correctly in the above steps.

Upon success you will see something in your console like below

Also Read : Learn how to use fileprovider in Android with example


Installing the build

And that we have successfully build our program. Let us install it using the command below.

sudo ninja -Cx installCode language: Bash (bash)

We will see the screen below after successful installation.

To check if the installation was successful run the command below. As there is an error but we have installed scrcpy successfully.

Everything has been done. Connect your device to the laptop with wire or via adb tcp/ip.

Make sure the device is recognized by ADB.

Now if you run scrcpy you should see something like below.

Verifying our build

And the device screen should popup on your desktop like below.

We have successfully setup scrcpy in our Ubuntu machine. And now you have completed scrcpy install to mirror your Android device in your Ubuntu.

But wait there’s more to it than just that. If we close the terminal our scrcpy window will close too. Let us solve this.

Add the lines below to the ~/.bash_aliases file. If there is no file create one yourself with touch ~/.bash_aliases.

Paste the code below in the file I just mentioned.

alias sconnect="scrcpy --always-on-top & disown"Code language: Bash (bash)

What the code above does is that it starts the instance and immediately detaches from the terminal window. That way it will keep running even when the terminal windows is closed.

Did you run into any issues while performing scrcpy install to mirror your Android device ? Comment below if you face any issues.

Now using Ubuntu ? Follow the guide here.

Keep learning and keep growing.

Also Read : Learn how to use shared preferences in Android


Related Posts