Remove the qmake project files for most of Qt.
Leave the qmake project files for examples, because we still test those
in the CI to ensure qmake does not regress.
Also leave the qmake project files for utils and other minor parts that
lack CMake project files.
Task-number: QTBUG-88742
Change-Id: I6cdf059e6204816f617f9624f3ea9822703f73cc
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
When accessibility was not active it was possible to force its
update, causing a null pointer exception in java.
Pick-to: 6.0 5.15
Change-Id: I60f65612d6e9f712ba3c591ffcc6803f06f09efb
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
- Accessibility focus can follow the position of the widget
(for example when swiping on a scrollview)
- controls are clickable directly after appearing on the screen after
scroll (previously you had to click somewhere else on the screen,
and after that you could focus the newly appeared control)
- checkbox and switch react correctly on click action
- fixed combobox behavior with accessibility enabled
Task-number: QTBUG-79611
Pick-to: 6.0 5.15
Change-Id: If36914ab0165f33593e68fd7ecf168693f8538a7
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
If TouchPointPressed was previously send and there is no
TouchPointReleased, we are exposed to uncorrectly handled touches
by application.
Some Android devices can recognize hand gestures. In some case the
gesture may be handled by Android System. In this situation
ACTION_CANCEL MotionEvent is delivered
ACTION_CANCEL - from Android specification:
-"Occurs when the parent takes possession of the motion, for example
when the user has dragged enough across a list view that it will start
scrolling instead of letting you press the buttons inside of it"
-"The current gesture has been aborted. You will not receive any more
points in it. You should treat this as an up event, but not perform
any action that you normally would"
If ACTION_CANCEL appears it means that ACTION_UP will not be delivered
to application. That is why ACTION_CANCEL need to be treat as
TouchPointReleased event.
Fixes: QTBUG-72110
Pick-to: 5.15
Change-Id: I8f32930cdb424b7530adc87b8334ac48a3bb9d57
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
On Windows with -developer-build java and templates files are not copied
properly, this makes sure to copy the files and dir for both targets.
Also, avoid creating a a deployment-settings.json file by adding
"TEMPLATE = aux".
Fixes: QTBUG-87627
Pick-to: 5.15
Change-Id: Iae269c3180a7b6d904fdba2e69fb3f815bbb1211
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Don't print stacktrace when setActivity is not found but only print a
debug message, QtActivityDelegate will continue to look for setContext
which might actually be a problem if not implemented.
Fixes: QTBUG-86733
Pick-to: 5.15.2
Change-Id: Iaf7f347ae04605a1f616f24d25cac4938c1640a4
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Rename Android package name org.qtproject.qt5.android to
org.qtproject.qt.android to avoid inconsistency with Qt 6 name.
Also, we include the major version number in the jar target.
Task-number: QTBUG-86969
Change-Id: Ibb68947289be1079911b34ea157bf089cc52c47f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Enable Gradle builds to use Java 8 features like lambda expression by
default.
Task-number: QTBUG-86282
Pick-to: 5.15
Change-Id: Ib497b8a789690fcca6e13ea4995e5966331c6c0d
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Allow Gradle builds to run using JVM daemon, this will improve the
current build time noticeably for clean builds and hugely for
incremental builds.
This will bring the Gradle build to comparable speed with a normal
Gradle build in Android Studio.
Task-number: QTBUG-86674
Pick-to: 5.15
Change-Id: Icc4267223802e4c9350b48099236650c023f868d
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
In Android API level 23 or lower it will still be able to open the file
even if the permissions are not provided. If the system is not going to
allow it then it will prevent it later on. So we trust the system to
block access if need be.
Pick-to: 5.15
Change-Id: If663e3cf0a10818931577988abdc0fb8ec2650db
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
QT_DEVICE_PIXEL_RATIO is replaced by QT_SCALE_FACTOR, while
QT_AUTO_SCREEN_SCALE_FACTOR is replaced by QT_ENABLE_HIGHDPI_SCALING.
Since High-DPI is now always enabled, there's no reason to keep the
code path for android.app.auto_screen_scale_factor. Also, based on
the original commit message that introduced this code, the value of
the property should have been true.
Change-Id: Ib34b1deeab46c488c67c4d64f087599b4a54dc55
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Since the load*Libraries functions might also be invoked when using an android service,
where no activity is present, we can't rely on the activity to get the metaData.
Pick-to: 5.15
Change-Id: I493c68591dbcfbe3063971cfd9ab384df71d03d7
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
AndroidManifest.xml file and the Android plugin already has a way
to provide commandline-arguments to app with the tag
"android.app.arguments". This change allow to set it from qmake/cmake
and allow Qt Creator to use that.
Task-number: QTCREATORBUG-23712
Change-Id: I3e680f40fd36ba6aaac7f344fb9509d2c3360e74
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
This enables QDir and QFileInfo/QFile to work with entries found from
a entryList() as it will obtain the permission for these files correctly
when it is encountered.
Due to what seems to be a quirk in the Android API, we cache whenever we
come across a known directory to save time later on for checking if it
is a directory. All uris accessed where we get permissions for are
cached so we get the right URI for that given content url as some are
granted via the Intent.
Fixes: QTBUG-85538
Fixes: QTBUG-83041
Fixes: QTBUG-76886
Pick-to: 5.15
Change-Id: I685b3c60804812a0e4b85fbdbb4ec5efaa09420c
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This amends the parent change but intended only for dev and not
to be picked for 5.15.
Change-Id: If7a2d81045c0625f19554eaf6b5cf69e72d42384
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Adding these method definitions because QtApplication might fail
to find them.
Change 80f7494e8a added few exceptions
printStackTace(), the line
src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java#106
prints error of java.lang.NoSuchMethodException for these methods.
Pick-to: 5.15
Change-Id: I63b1f0d3abd5a7fe7d9e87bbff252c437300722f
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Certain resources and compiled jar files have to be copied into the
non-prefix build dir location. They were previously only installed,
which doesn't do anything in a non-prefix build.
Change pro2cmake to generate code that places the compiled java
jars into QT_BUILD_DIR, so that non-prefix builds work.
Place the module dependencies xml files into lib folder in non-prefix
builds.
Don't special case the output and install location of the Android QPA
plugin.
Task-number: QTBUG-85399
Change-Id: I4ac9d3929ea8ecc95ec99a77e621ad2121b68832
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
In pre Qt 5.14, the assets folder used to have the file
"--Added-by-androiddeployqt--/debugger.command", that indicate debug
mode, however, in Qt 5.14+ the assets are compressed into one file, so
this current check is obsolete. Qt Creator uses extraappparams to pass
QML debugger args, without it the debugger won't start.
Pick-to: 5.15
Task-number: QTCREATORBUG-24155
Change-Id: Ib3037f4dc8c55af6932d598c6491a046efe13033
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
If the url is a "file:" scheme url don't check for permissions
which the file won't have, and then disable StrictMode for API >= 24
to be able to pass the "file:" path to the openUrl intent.
Pick-to: 5.15
Fixes: QTBUG-67877
Change-Id: Ia3fecc24a67069dc76f866455277bf8b929e7697
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
When the application is in multi window mode then when pausing it should
not suspend the application as it can still be visible in the
background.
Change-Id: I03a561459b2aa04c808b7d4220cd3e558671dd17
Pick-to: 5.15
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
The onCreate function expects a Bundle variable to be passed in so it
needs to get a null Bundle in this aspect to prevent it from crashing
due to the lack of parameters.
Change-Id: I8cc4b62d9e8db170b957f7574360033e91ca3493
Pick-to: 5.15 5.12
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
When adding the default AndroidManifest.xml to a project, Qt Creator
edits some pieces because of autoformat and shows that something is
changed, but the user changed nothing, and this can be confusing. Let's
make them on the same page.
Pick-to: 5.15
Task-number: QTCREATORBUG-23768
Change-Id: I76088358dc31be45adb766bed29e2c9d889a8f09
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
From API 28 it is possible to clear the clipboard so we should ensure
that this is done if API 28 or later is being used. Otherwise it is not
removed, but that is due to limitations on the Android side.
Pick-to: 5.15
Change-Id: I1fe504d0e566c6923b39b2adf4540619c6b1daf7
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Since Android native file manager supports mimeTypes, I use
QMimeDatabase to get the correct mime type for the nameFilter
used with the file dialog.
[ChangeLog][Android] Support setting mimetypes and and namefilters for
Android native file dialog.
Task-number: QTBUG-83089
Change-Id: I46545576dc9b51aa872bb37dbf4fe12b2533bdd9
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
rs is the country code for Republic of Serbia, but se is the Serbian
Language.
According to the IANA subtag registry that is referenced in the error
message, the language subtag for Serbian is se.
https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
This fixes an error when uploading some apps to the Google Play Store.
Fixes: QTBUG-83780
Pick-to: 5.15
Change-Id: I532a3082ca954a78343c873246b09a14d7a80a0e
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This amends f36b042e2b to only check
permissions for uris that are going to be local to the device itself.
Other uris, such as http, https etc, should go through fine without a
check.
Change-Id: If05caadb6e0712d9db8f57185ef017d724d9e172
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(This reintroduces c17a5cec19,
which was reverted in Qt 5 because it requires API level 23.)
This flag tells the app to use as much of the screen as possible
while still keeping system UI visible, and can be supported on Android
by using translucent system UI, similar to iOS.
What this does:
1. It changes the current fullscreen/not-fullscreen logic to
allow three states: fullscreen, fullscreen with translucent
decorations and not-fullscreen.
2. In order for it to work, we have to send the actual
screen geometry and available geometry, at least in the case
where the user needs to know the available geometry to
know the safe area of the window. So we get the real screen
metrics and pass these to the QPA plugin (API level 17, so
we can do that now that the minimum version is 21.)
3. Note that getting the insets and calculating the useable
area does not work for non-fullscreen windows, since Android
is quite inconsistent in this respect. So in this case we
just use the window size and origin of 0,0 for the available
geometry.
4. Since we are touching this code anyway, this patch also tries to use
more consistent wording (calling it "available geometry" everywhere
instead of desktop geometry in some places and just geometry in
others, etc.)
[ChangeLog][Android] Qt::MaximizeUsingFullscreenGeometryHint window
flag is now supported, and will make the window fullscreen, but keep
the system UI on-screen, with a translucent background color.
Fixes: QTBUG-74202
Change-Id: I4cc5ef9cc2a3bd22d4d8d2bb767c6ff8a3aa75c0
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
There are certain APIs we need which cannot be used without this,
and in general it simplifies some code.
[ChangeLog][Android] Minimum Android version is now Android 6.0,
API level 23.
Change-Id: I72ca3b429bf48969e16e2bc6b99d9c4af993ea77
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This enables things like size(), exists() to work with Android content
uris with the provided uri given from a filedialog. It is expected that
it is always a full path due to the nature of content uris, so relative
paths will not work.
Change-Id: I9c9ea42833677eb9d937b33e9dd42ee2a7d9c7c5
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This is required because opening a Uri with no permissions can cause
crashes.
Some exceptions were not handled at all.
Change-Id: I2e8f9505879b9fc4c1c47bdfa1bf173b39ada3ea
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Conflicts:
examples/widgets/graphicsview/boxes/scene.h
src/corelib/Qt5CoreMacros.cmake
src/corelib/Qt6CoreMacros.cmake
src/network/ssl/qsslsocket.cpp
src/network/ssl/qsslsocket.h
src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp
src/testlib/CMakeLists.txt
src/testlib/.prev_CMakeLists.txt
tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
Disabled building manual tests with CMake for now, because qmake
doesn't do it, and it confuses people.
Done-With: Alexandru Croitor <alexandru.croitor@qt.io>
Done-With: Volker Hilsheimer <volker.hilsheimer@qt.io>
Change-Id: I865ae347bd01f4e59f16d007b66d175a52f1f152
In some circumstances android throws an exception or returns null,
when trying to access the clipboard.
Fixes: QTBUG-80689
Change-Id: I92c134e2a002fc648ff966e15a19eb3307c428a1
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Obsolete SDK_INT Version Check
------------------------------
This check flags version checks that are not necessary,
because the minSdkVersion (or surrounding known API level)
is already at least as high as the version checked for.
The mindSdkVersion in templates/AndroidManifest.xml is 21 for Qt 5.14
and androiddeployqt also ensures that the minSdkVersion is not below 21.
Change-Id: I452de5b152f572efc69e6b292a8b15dbbfba639b
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
(cherry picked from commit b8e404f6d0631e04d30a864dc68b0574bfca90f1)
Add support to pro2cmake to convert java code for android.
Add support to override API_LEVEL for the Android sdk jar file. If the
sdk is not found, we'll default to the one located by QT_ANDROID_JAR.
Change-Id: If0b746dc7f9148ac43e6592a4a4dd23d46bbd4cd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Instead to extract the assets QML file, we create a .rcc bundle file
which is register by android qpa plugin before the it invokes the main
function. Thsi way we avoid extracting the QML files from assets as they
can be accessed directly from resources.
[ChangeLog][Android] Instead of bundling QML resources in assets
and extracting them on first start, Qt now creates an .rcc file
and register it before invoking the main function.
Change-Id: Icb2fda79d82c5af102cc9a0276ff26bb0d1599e8
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
The new version fix QDirIterators and it lists all the files and dirs.
Change-Id: I5a30eedb61ab2397a84365d00f308cda0c194de2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Multi arch build in one go is need to support the new .aab packaging format.
By default the users apps are built for all Android ABIs: arm64-v8a armeabi-v7a x86_64 x86
The user can pass ANDROID_ABIS to qmake to filter the ABIs during development,
e.g. qmake ANDROID_ABIS="arm64-v8a armeabi-v7a" will build only for arm ABIs.
[ChangeLog][Android] Android multi arch build in one go,
needed to support the new .aab packaging format.
Change-Id: I3a64caf9621c2a195863976a62a57cdf47e6e3b5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
resolver.openFileDescriptor throws a SecurityException when the caller doesn't have sufficient permissions to access the URL. This will make an application crash.
We should handle this case gracefully and report it to the user. I'm unsure if there is a better way to do this than simply logging the exception.
Change-Id: I36bfbd3e398c8176e57042a27740aa15bce63a7c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
On Windows buildToolsVersion 29.0.0 have problems, therefore,
it's better to use a version that we know it works on all platofrms.
Change-Id: I25cdea4b8101bfe5f022025fcd7cc4cbf358fa03
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Generate the android deployment settings json for android apk
targets. QtPlatformAndroid is now also deployed as a public
build dependency of QtCore. Some minor refactoring has been
performed to the naming of variables and functions to
better match the public facing apis.
Extra settings for the file can be configured using the
following target properties:
set_target_properties(Core
PROPERTIES QT_ANDROID_DEPLOYMENT_DEPENDENCIES "foo;bar"
QT_ANDROID_EXTRA_LIBS "foo;bar"
QT_ANDROID_EXTRA_PLUGINS "foo;bar"
QT_ANDROID_PACKAGE_SOURCE_DIR "/foo/bar/"
)
The file is generated using the function
qt_android_generate_depoyment_settings().
We need to install the android template files and jar
files during the android build as the androiddeployqt tool
wont work if parts of it are split between the host
install and the android install.
Added QT_BUILD_QT variable to check whether we are building
Qt from source.
Finally, we also force the stdlib to shared via cmake
configuration with -DANDROID_STL="c++_shared"
Change-Id: I063c47e11749d56ba4c6f02101dbcc09e1b9fe87
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Enable building androiddeployqt when performing host builds only.
Added QtPlatformAndroid.cmake to locate Java and the setup the
android SDK platform when building on android.
Install the androiddeployqt support files when performing a host
build.
Added ANDROID_SDK_ROOT configuration variable for specifying the
android sdk directory.
Generating the deployment-settings.json will be done in another
change.
Change-Id: I1bf15315af4ed904d2fb1d22b0e8e834df32d6ed
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Resources are usually needed to add extra stuff to apk lib/<arch> which normally
are stripped by gradle.
Change-Id: Id96ce246fdc2a4606e39ecfb75d5b3294aad3c08
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Combined width of all four buttons (cut, copy, paste, select all) is
greater than width of the screen in some locales and/or on some devices.
This was causing width of the last button to be set to zero and height
of the whole popup to grow too much due to word wrapping in the last
button. The context menu used to look something like this then:
Cut Copy Paste S
e
l
e
c
t
a
l
l
This commit disables word wrapping and enables text ellipsizing for
button labels. This fixes height of the popup. In the long term though
Qt will probably have to implement an overflow button like in Android's
built context menu.
The linked bug report contains before and after screenshots.
Fixes: QTBUG-72933
Change-Id: I8e270dbf8ca66f99748cdc531a77e11a5ab11c2b
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
The old code in QtActivityDelegate.updateHandles() and
EditPopupMenu.setPosition() could use size of EditPopupMenu.m_view to
calculate position of context menu before that size was calculated
during an asynchronous layout pass. In particular m_view reports size
0x0 when context menu is opened for the first time after start of the
application. In this case the context menu was displayed on top of the
text editor instead of being displayed above it.
This patch fixes that problem by moving all positioning code from
QtActivityDelegate.updateHandles() to EditPopupMenu.setPosition() and
adding an OnLayoutChangeListener which calls setPosition() again each
time the size of m_view changes, including when it changes for the first
time from 0x0 to a real value.
Change-Id: I670fef811a4dcba5524f7520ea41a47978dd10f1
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
The old code used size of m_cursorView to calculate position of the
cursor handle popup. But since on Android layout process is
asynchronous, both width and height of m_cursorView was 0 upon first
call to setPosition(). This resulted in selection handles being
initially displayed at a wrong position for a fraction of second and
then quickly moving to the correct position. In some cases handles
stayed at the wrong position until touched by user.
This patch replaces use of m_cursorView's size with use of m_popup's
size. Width and height of m_popup may be used immediately because they
are explicitly assigned in initOverlay(). The size of m_popup should be
always equal to the would-be size of m_cursorView because of how it is
calculated.
Change-Id: I9868c9a5ce0103d8328b2478cf82feaceba7f404
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
To get appropriate aspect ratios for the splash screen, you usually
need separate drawables for the portrait and landscape versions.
We support this by adding two new meta data entries that can be used.
If they are not available, we will fall back to the generic one,
so we are still compatible with existing AndroidManifest.xmls.
[ChangeLog][Android] Added entries in the AndroidManifest.xml for
specific portrait and landscape splash screens. If one is present
for the current orientation, it will be preferred over the generic
one.
Task-number: QTBUG-74029
Change-Id: I5ffea56320aef85f62f21a59df4d077b4163a65a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Since Activity's onConfigurationChanged is not called
when rotating from landscape to landscape (through 180 degrees),
added display listener to detect the rotation.
DisplayManager.DisplayListener.onDisplayChanged() is called exactly when
Display.getRotation() value is changed.
Task-number: QTBUG-56919
Change-Id: Iabf376adf0a0756dddacaece62e5a2ac604ea947
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
In 71a63836ed a workaround for Samsung
devices using ImhNoPredictiveText was included as there is a bug on
those devices. However this causes a problem with other keyboards such
as Gboard when using languages such as Japanese, as it would not show
the right keyboard at all and only showed a qwerty one in those cases.
Therefore we default to not working around the issue as it is more of a
problem to not allow certain keyboard layouts as opposed to having
predictive text even if it is turned off. For those who want to disable
predictive text and as such have the consequences of not showing some
keyboard layouts, they can set the
QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT environment
variable.
[ChangeLog][Platform Specific Changes][Android] Text fields with
ImhNoPredictiveText set are no longer working around keyboards that
disregard this setting. To enforce the workaround then the environment
variable - QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT
should be set.
Change-Id: I9ace7ba96ebad68987b53783e25067b66c002f25
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
This patch ensures that installed files are written to physical disk
before the 'cache.version' file is written.
QtLoader.java uses the 'cache.version' file written during
self-installation to indicate whether re-installation is necessary.
The 'cache.version' file, however, was being written at the start of
installation, so its existence merely indicated that the installation
was attempted. In the case of power loss during installation, the
existence of 'cache.version' would prevent retrying installation on the
next launch, so the bad installation was irrecoverable.
[ChangeLog][Android] Fixed an issue where an application installation
would be irrecoverably broken if power loss or a crash occurred during
its first initialization run.
Fixes: QTBUG-71523
Change-Id: If771b223a0a709a994c766eea5a4ba14ae95201e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Wrong locale name
-----------------
From the java.util.Locale documentation:
"Note that Java uses several deprecated two-letter codes. The Hebrew ("he")
language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish
("yi") as "ji". This rewriting happens even if you construct your own Locale
object, not just for instances returned by the various lookup methods.
Because of this, if you add your localized resources in for example values-he
they will not be used, since the system will look for values-iw instead.
To work around this, place your resources in a values folder using the
deprecated language code instead.
See also:
http://www.apps4android.org/?p=3695https://issuetracker.google.com/issues/36908826
Change-Id: I726c43f282156b21e8d6b073029f3c3b8fd42a30
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Delaying the main library load cause serious problems for people who want
to access it's functions from java before the main method is called.
Change-Id: I87f3a8282003395e003b06978048762eeabe6548
Fixes: QTBUG-68813
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
The "file dialog" on Android returns such URLs, which so far required
special-casing this in application code. With this change QFile can
consume those URLs directly.
Change-Id: I489c0db112cf1dc7497e7a90f0e9a79ea8fa5237
Reviewed-by: Nicolas Fella <nicolas.fella@kdab.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
This makes it much easier to have the version information set for an
Android APK without having to manually modify the AndroidManifest.xml
each time.
[ChangeLog][Android][qmake] Can now set the version name and code for
Android using ANDROID_VERSION_NAME and ANDROID_VERSION_CODE respectively
in the pro file.
Change-Id: Ie6813bc3a7444f7baa5e772b93bc2695d9b81e57
Done-with: Markus Maier <markus.maier@rosenberger.de>
Reviewed-by: Markus Maier <markus.maier@rosenberger.de>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Google removed this support long tima ago, also we removed it from QtCreator.
Change-Id: I326da09e9e57f655eecfd1f25f39b4bd9c6784d1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Unused resources
----------------
Unused resources make applications larger and slow down builds.
Amends e3689949ba. The string
was introduced there but not added to the manifest.
Task-number: QTBUG-72895
Change-Id: Id07e02074feb15ace2c99e6ace51d8fe407877fa
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
With the current distribution, this is 90% of active devices, and
it was released in 2014. Qt 5.12 is LTS and will continue to support
older Android versions for a long time to come.
This is to reduce the testing needed on outdated platforms and
allow ourselves to use some newer APIs unconditionally in Qt.
Android 21 was chosen because it is the minimum version that supports
64 bit builds.
[ChangeLog][Android] Increased the minimum supported Android version
to Android 5.0 (API level 21).
Fixes: QTBUG-70508
Change-Id: Ia7b4345e42ca05a25a292f11ccbb8cbd692cf8f0
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Incorrect order of elements in manifest
---------------------------------------
The <application> tag should appear after the elements which declare which
version you need, which features you need, which libraries you need, and so on.
In the past there have been subtle bugs (such as themes not getting applied
correctly) when the <application> tag appears before some of these other
elements, so it's best to order your manifest in the logical dependency order.
Change-Id: I647c6eed71b678f4df65a00fbd51135b93959e11
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
On Android arm64 the native libs are not in /data/app/../libs/... anymore but they are moved
to some random location, so, trying to load the libs from old location will fail.
Fixes: QTBUG-72616
Fixes: QTBUG-71027
Change-Id: I70263c8ae2d014999fbc78f40bd9b7d04d31d1dd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
This works in the same way as JARs are currently provided by dependencies,
and becomes necessary when needing e.g. the Android support/compat libs
for implementing the Java side of a library.
While this is not relevant (yet?) for Qt itself, we hit this with KDE's
notification framework.
Change-Id: Ia87d1a048a493f7bc311abf5761f33d1943cfbe9
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This also updates the used API to use ClipData and not the deprecated
ClipboardManager API.
[ChangeLog][Platform Specific Changes][Android] QClipboard now supports
HTML and URI data.
Fixes: QTBUG-47835
Fixes: QTBUG-71503
Change-Id: I43f82bfc63b3d159087c0fb6c840c186a370e20c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
This mechanism should only be enabled only for debug deployments, but
the check was removed by accident in ca139228ab.
Fixes: QTBUG-72230
Fixes: QTBUG-72132
Change-Id: I3378436e93314fdf254919aed066f1284a4581b3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Any other method logs this here, too. This helped
to find the problem of QTBUG-71027.
Change-Id: I2d1f6199837d778ada62dac357764b0609e99692
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Configuration 'compile' is obsolete and has been replaced with
'implementation' and 'api'.
It will be removed at the end of 2018. For more information
see: http://d.android.com/r/tools/update-dependency-configurations.html
Task-number: QTBUG-71570
Change-Id: I6f498d8cb3ff01ad641aee697496e3dc56059a72
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>