waitForFinish returns false if the process is no longer running at
the time of the call. Handle that throughout the codebase.
Change-Id: Ia7194095454e82efbd4eb88f2d55926bdd09e094
Reviewed-by: hjk <hjk@theqtcompany.com>
Don't try to write from another thread into a process stdin. Fixes
"QSocketNotifier: Socket notifiers cannot be enabled or disabled from
another thread" warnings.
Change-Id: Id93a40a6bee6d4042cf600c8fabb06bf965d8ccc
Reviewed-by: hjk <hjk@theqtcompany.com>
This solves the ambiguity between 0 and -1 being the "invalid" port.
Change-Id: I3bac11dd4117bb1820fbd58186699925b73df1c5
Reviewed-by: hjk <hjk@theqtcompany.com>
Creating a QProcess every second is very VERY expensive, making the QtCreator UI
experience pretty bad, the UI was not responsive when debugging or even when
running an Android application from QtCreator.
Thanks to Intel's VTUNE I could spot and fix the problem in minutes.
Change-Id: I6d3dc71db93e91d9846101a1877bab017df41aba
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Using the AndroidRunnable is easy for other plugins to run custom adb
commands before intent is started and after it's stopped.
Change-Id: I012ae87c92cea16aa8074dce2dc6f2b0c4ebeb30
Reviewed-by: hjk <hjk@theqtcompany.com>
The start point is the if (m_useLocalQtLibs) block in AndroidRunner
constructor which seems to be effectless since 8d27ec6 (Android: Fix
debugging applications that link many modules)
Change-Id: I7850c1f53a003553ae1b3fdf0881f4c9fedf7b15
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Android SDK Tools 24.x ship an adb that requires in the 'adb shell'
command an additional level of quotes for parameters with spaces
compared to previous versions. That broke the passing of the
gdbserver start command and consequently debugger startup.
Task-number: QTCREATORBUG-15032
Change-Id: I442355821641d4c6a632b50d1065c442736711aa
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
-1 is not a valid quint16 number. It gets converted to 65535, which is
a valid port number. So, instead, use port number 0 which isn't valid
(if you try to bind to it, the OS chooses a port for you).
Found by ICC
src/plugins/android/androidrunner.cpp(150): warning #68: integer conversion resulted in a change of sign
Change-Id: I7de033f80b0e4431b7f1ffff13fc4e4f0f7af445
Reviewed-by: BogDan Vatra <bogdan@kde.org>
The services need to be loaded before the first QML engine is created.
The first QML engine may be created before a client connects. When the
JavaScript debug service is loaded the engine is put into interpreter
mode as we don't support debugging in JIT mode. Profiling, however
should be done in JIT mode, whenever possible.
Thus, in order to avoid the loading of unnecessary plugins and to get
better results from the QML profiler we tell the debug server which
services we expect, even before the client connects. Qt 5.6 will support
additional command line arguments to specify the services and this
change uses them.
Change-Id: I6dcee016c39995e9adada6eaf0e39d8299c9b7e7
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
We do that for Android 5 and onwards.
Change-Id: Ia79fbf3cd50ed561e5dba1b8707d296fe1daa82d
Task-number: QTCREATORBUG-14663
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This provides a way for third-party plugins to implement run
modes without the need to add a value to the central enum or
using manual workarounds like RunMode(*(int*)&someUniqueObject).
Instead of centrally defined enum values this uses Core::Id that could
be defined anywhere.
Change-Id: Ic350e3d8dbb8042c61b2d4ffec993ca151f53099
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
- Move sysRoot, debuggerCommand, targetAbi to DebuggerRunParameters,
they are always the one coming from the kit.
- Move projectSource{Directory,Files} to DebuggerRunParameters,
they are alway coming from the runConfiguration's project
- Pass RunConfiguration always as separate parameter, that's
what related code does.
Change-Id: I9965a052237af53fa2d170701bc88b552cab12ed
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
When debugging an application we will add a few arguments
to the command line for launching the application. We would do
the same for every library etc. required by the modules linked
to the application. At some point, the command line would become
too long and fail to execute.
Passing the libraries, libs_prefix, etc. on the command line
is not necessary, since the parameters are already included in
the AndroidManifest.xml, otherwise it would not be possible to
launch the application from the device itself.
Change-Id: I93a7f64a4ce32ebb2b25c54b0d17ae2b23706e24
Task-number: QTCREATORBUG-13691
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Security permissions prevent access to files not owned by the current
process. This patch replaces the file based handshake protocol with
a local server based implementation. The server waits for QTC to connect
to it and sends back the current process ID. This new mechanism works
on pre 5.0 devices as well.
The existing file based handshake remains and can be activiated via the
env variable QTC_ANDROID_USE_FILE_HANDSHAKE.
Task-number: QTCREATORBUG-13418
Change-Id: Ie40ec801f265a9e13c3220f300798c27abd97ae2
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This is mostly a copy of the commit message of 06d4c0b2e but its
more convenient to have it in the code than to browse git history.
Change-Id: I97a7a3c10f07fc268ba67986f1e830ee92d9c28d
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Use one less signal for result passing.
Change-Id: I6209d248fb01056835ef65b91981b9b2747d6f7f
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Starting with Qt 5.4 we are packaging the gdbserver tool as libgdbserver.so,
otherwise gradle will refuse to add it to the package. Gdbserver is renamed
also for ant.
Change-Id: I4ef6408226ab05ea7b4e3d6f41dd368f5a602c7d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Starting with Qt 5.4 we are packaging the gdbserver tool as gdbserver.so,
otherwise gradle will refuse to add it to the package. Gdbserver is renamed
also for ant.
Change-Id: I6da3ad54de591c124fe56d5464e74099dfd901a1
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
On some machines adb takes a longer than 5s to finish. The reasons for
that are unknown.
Change-Id: I949dc40b8f407aa98be0456df47a9ebe88e230a5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
If you trigger a fatal signal e.g. dividing by 0, you'll get a message
with an "F/" prefix. That should be red, too, just like "E/" and "W/".
Change-Id: I8bef7ebf4e8c7d7ac3794750306073043852634b
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Otherwise we throw away important parts of the output.
Change-Id: I7ab6989c19660bcbb53d6ff61eda62878044ded2
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Make it possible to create multiple AndroidConfigs so that we can have
a different one in the settings dialog from the global one. Move pretty
much every method from AndroidConfigurations to AndroidConfig, so that
the settings dialog can work with its copy. Also add some additional
logic to the settings page around the java setting. To start the avd
manager we need both a sdk path and a java path. Also do some basic
additional checking of the java path.
Task-number: QTCREATORBUG-7724
Task-number: QTCREATORBUG-10936
Task-number: QTCREATORBUG-10937
Task-number: QTCREATORBUG-11059
Task-number: QTCREATORBUG-11218
Change-Id: I148c69b9c98a8a070d17d9b0e223d01db1750e69
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
That waits forever. For processes that should finish in a reasonable
time, we should not wait forever. I changed most of the waits to 5s,
all of those functions do handle a failed waitForFinished. I doubt
that all callers do also handle it correctly, but that's probably
still better than waiting forever.
Task-number: QTCREATORBUG-10868
Change-Id: I368a911f19a4f81d71b24cf9d58796bd99878040
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
There are two different ways we used to stop a application:
am force-stop $packageName or kill -9 applicationPid. As far as I
remember that's because on some devices some one of them didn't work.
The code wasn't consistently using both though. Fix that by making it
one function, which uses both and use that one consistently.
Task-number: QTCREATORBUG-10557
Change-Id: Ib09a51e2bddae8d28a5d234e792906cc03606fda
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This does include qWarning() and qDebug() output
Task-number: QTCREATORBUG-10559
Change-Id: I12e98cc25574003d1d26cda84dff5db0c323959d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>