Installing an Android application (.apk) file
Introduction
Installing an Android application package (an apk-file) when developing an android application should be a rather trivial task. However, there are a few tweaks needed to make it work in Linux. This note describes how you install Android apk-files on a device from a Linux host. I have followed this procedure on ArchLinux and on Ubuntu.
In order to proceed you need Android SDK installed on the Linux host.
Turn on Developer mode on your Android phone
You need to turn on developer mode and allow usb-debugging. The way this is done may depend on the Android device used.
On Motorola Moto e6 (running Android 9) you go to settings, then
System, advanced -> About phone
then hit Build number
multiple times.
When developer mode is turned on there should be a new menu option in
Settings -> system -> Developer options
where you can scroll down to Debugging
and enable USB Debugging.
No permissions for device
When you plug your device you can use adb
(available from Android SDK) to list
devices.
$ adb devices -l
List of devices attached
ZE2222MG7R no permissions; see [http://developer.android.com/tools/device.html] usb:2-2 transport_id:1
as seen there are no permission to install an application via adb
on the
connected device. This can be solved by adding a udev
rule.
USB device id
To create the udev
rule the the USB Device id is needed so let’s list the
device id using lsusb
(this can also be found in dmesg
when the device is
connected)
$ lsusb
Bus 002 Device 006: ID 0e8d:201c MediaTek Inc. moto e6 play
Here the vendor id is 0e8d
and the product id is 201c
.
Adding udev rule
Create a rules file for Android in /etc/udev/rules.d/51-android.rules
and add
the line
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201c", MODE="0660", OWNER="bjorn"
Now reload udev
$ sudo udevadm control --reload
Disconnect and reconnect the device.
Now list devices again
$ adb devices -l
List of devices attached
ZE2222MG7R unauthorized usb:2-2 transport_id:6
There should be a pop-up dialog on the device asking you to allow USB debugging.
Authorize and list devices again
$ adb devices -l
List of devices attached
ZE2222MG7R device usb:2-2 product:bali_reteu model:moto_e6_play device:bali transport_id:7
Now you should be allowed to install applications on the device using adb
Installing the app
Now you can install the app using Android Studio or via adb
.
In adb
you will probably need to allow installing test packages, so add the
-t
flag.
$ adb install -t <package>
If you already have the package installed and want to replace the existing, add
the -r
flag
$ adb install -t -r <package>