How-to-debug-Qt-applications-on-Android-device

From Qt Wiki
Jump to: navigation, search


This is a guide on how to enable a real on-device debugging for Qt applications on Android under Linux. I will show you how to achive this for Samsung device, but the same steps are required for any android device, you just have to know who is a vendor of your device.

You might also need to put the device in "developer mode", that is, enable "USB debugging" in the Settings → Developer Options of the device.

See also Using Hardware Devices .

Steps to achieve this are as follows: 1. Run

lsusb | grep Samsung

if you use let's say HTC device just type HTC instead of Samsung after "grep". You will see something like this:

Bus 001 Device 003: ID 04e8:689e Samsung Electronics Co., Ltd GT-S5670 [Galaxy Fit]

Strings 04e8 and 689e are of a key value to get your android device propely recognized.

2. Now make a rule 51-android.rules in the /etc/udev/rules.d/ directory. The number 51 is an information to udev so it can know in which order to load the rules. You can type some other number if you already had some rules defined, but keep in mind the order in which those rules will be applied.

3. In the file 51-android.rules input this:

SUBSYSTEMS"usb", ATTRS{idVendor}"04e8″, ATTRS{idProduct}=="689e", MODE="0666″

If you take a closer look you will see that we used those bold numbers from step 2 so that we can make our rule apply only to our device. So the first string04e8 is an ID of a vendor of the device (in this case vendor is Samsung), and the second string 689e is the ID of the product (in this case product is a GT-S5670 which is a designation of Samsung Galaxy Ace mobile device). MODE="0666" just tells that the node that udev will create should be readable and writable by everyone.

4. After you have saved the file, run this command in order to reload udev's rules: udevadm control —reload-rules

5. After you have reloaded the udev's rules, you need to restart adb. Go to the folder where you keep your android SDK. Go to the folder platform-tools inside the android SDK directory and run:

adb kill-server

and after that

adb start-server

NOTE: make sure that adb is in your PATH.

This will reload adb server and it should now list your device, just run adb devices and if you see something like this:

List of devices attached S5830cba628dc device

After this your device is properly recognized. Now you are set and ready. Next time you hit Run button in Qt-Creator your app will load on your mobile device.