summaryrefslogtreecommitdiffstats
path: root/src/android/java/src
Commit message (Collapse)AuthorAgeFilesLines
* Android: get rid of the redundant ENVIRONMENT_VARIABLES QtActivity fieldAssam Boudjelthia2023-11-101-11/+0
| | | | | | | | | | | | | | | | | This variable supposedly holds a list of environment variables that will be set by the Qt app, however, if a user needs to set an env variable, it can be already done either in C++: qputenv(key, value); Or in Java via (the same method that Qt plugin use): android.system.Os.setenv(key, value, override); Thus, such field just makes things more confusing overall only. Task-number: QTBUG-115017 Task-number: QTBUG-114593 Change-Id: I14856ed0720bfa2605da9c7d51173703df52bc58 Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: add call QtActivity.appendApplicationParameters() to set argsAssam Boudjelthia2023-11-101-6/+0
| | | | | | | | | | | | | | Instead of having to set a field of the class QtActivity to set extra app parameters (i.e. passed when calling main()), make it doable via a new API call appendApplicationParameters(). Note that this is equivalent to setting the manifest metadata "android.app.arguments". Providing a dedicated method for this makes it cleaner and is the expected way. Task-number: QTBUG-115017 Task-number: QTBUG-114593 Change-Id: I407cb68e57fa9a1be24586e42cb947f9c7f4037e Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: set the default theme directly in QtActivity without reflectionAssam Boudjelthia2023-11-101-25/+0
| | | | | | | | | | | | | | | | | | | | | | | | Currently the default theme is looked for using reflection in the android.R package to get an id and then it's set. This is not needed if we set the theme directly in the user's QtActivity which would have access to that id directly pre-deployment. To make setting a theme more in line with Android, retreat to using setTheme() call directly for user projects instead of having to maintain some internal field to store the theme name and have the user set that if they want a different theme for their app. Also, the Android plugin seems to set an env var for QT_ANDROID_THEME with that default theme's name and that's used in QAndroidPlatformTheme to check a theme specific extracted theme style.json, however, the Java side doesn't seem to ever write to such a path, making this approach totally redundant. For that reason, this code path is now removed. Fixes: QTBUG-114075 Task-number: QTBUG-115017 Task-number: QTBUG-114593 Change-Id: I9ab3c025626aac2c09bc19eb7d846eca14a45070 Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: Simplify Qt for Android hierarchy, less Java reflection!Assam Boudjelthia2023-10-123-453/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes takes Qt for Android Java code away from the Delegate classes that uses heavily Java reflection to invoke Activity/Service calls and overrides. So instead of that, now, we have a QtActivityBase and a QtServiceBase classes which handle the override logic needed for Qt directly without reflection. These Base classes extend Android's Activity and Service directly, and are inside the internal Qt android package (under Qt6Android.jar). For example, to handle onConfigurationChanged, instead of the current way where we need this in QtActivityDelegate: public void onConfigurationChanged(Configuration configuration) { try { m_super_onConfigurationChanged.invoke(m_activity, configuration); } catch (Exception e) { e.printStackTrace(); } handleUiModeChange(configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK); } And then this in QtActivity: @Override public void onConfigurationChanged(Configuration newConfig) { if (!QtLoader.invokeDelegate(newConfig).invoked) super.onConfigurationChanged(newConfig); } public void super_onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } And having to keep it's Method handles around and then use Java reflection to call the override behavior done by Qt and the superclass methods. instead of that, we can do it now in QtActivityBase like: @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); handleUiModeChange(newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK); } Then, we would still have our user facing QtActivity class which extends QtActivityBase and benefit from the same implementation of Qt logic done in the base class. An additional benefit to this approach is that now QtActivity will be very lightweight and doesn't need to have all the boilerplate code as before. [ChangeLog][Android] Simplify Qt for Android public bindings (QActivity, QtService and QtApplication) by implementing base classes which use the delegate implementions directly and avoid reflection. Task-number: QTBUG-115014 Task-number: QTBUG-114593 Change-Id: Ie1eca74f989627be4468786a27e30b16209fc521 Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: Clean QtActivity and QtService from uneccessary overridesAssam Boudjelthia2023-10-122-613/+40
| | | | | | | | | | | | Following the previous change in the chain, this removes override calls that have no implementation under Qt Delegates, so they can be removed and the default behavior would persist. Task-number: QTBUG-115014 Task-number: QTBUG-114593 Change-Id: Ia7c76e9b56c63cba935cb3d2ae3b6260d3462e51 Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: remove overrides for uneccessary and deprecated methodsAssam Boudjelthia2023-10-121-83/+0
| | | | | | | | | | | | | Those overrides are deprecated and will print a warning during Gradle build, moreover, these calls don't have any implementation by Qt that's being triggered by the Qt Delegates classes, so they don't need to be kept in the Activity/Service main classes' implementations. Task-number: QTBUG-115014 Task-number: QTBUG-114593 Change-Id: If0c241206652c1a52e2396a24ec7ab63236e6308 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: remove uneccessary calls to QtNative from QtActivityAssam Boudjelthia2023-10-122-169/+0
| | | | | | | | | | | | These forward calls to QtNative don't need to be present inside the QtActivity implementation, all those calls are invoked by the Delegate classes. Task-number: QTBUG-115014 Task-number: QTBUG-114593 Change-Id: Id1bfa694687af3edc4e9b82b09cf13e1f8eba1de Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: Simplify the user facing Java bindingsAssam Boudjelthia2023-10-126-747/+106
| | | | | | | | | | | | | | | | Move QtLoader classes outside of the bindings package and into the internal Android Java package (Qt6Android.jar that is), to simplify Qt for Android project templates. This is because QtLoader classes are used to trigger Qt libs loading and the users don't need to necessarily know about it or find it in the project's source files. The classes in question: QtLoader, QtActivityLoader, and QtServiceLoader. Task-number: QTBUG-115014 Task-number: QTBUG-114593 Change-Id: I61f68abf6ee83fc45bc47ed9af7457db4f7deabc Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Improve Intent source app detectionJens Trillmann2023-07-311-3/+12
| | | | | | | | | | | | | Activity.getReferrer does not only return app IDs but also URLs if Intent.EXTRA_REFERRER is set on the Intent. In the case of Chrome the referrer is set to the website triggering the Intent. To improve the detection of the calling app we check first if the browser specific Browser.EXTRAS_APPLICATION_ID is set. If it is not set we fall back to Intent.getReferrer. Pick-to: 6.6 6.5 Change-Id: I33d1edd52de98486d9616713e531ea20ada87bcb Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Add Q_TRACE_LOCATION to android supportAntti Määttä2023-02-091-0/+5
| | | | | | | | | | This is needed for tracing android devices. Pick-to: 6.5 Change-Id: Ic04e15b43b426bdb1232e671acb4163165eab666 Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
* Android: Fix deprecations AlertDialog.setButton()Assam Boudjelthia2022-12-211-2/+5
| | | | | | | | | | https://developer.android.com/reference/android/app/ AlertDialog#setButton(java.lang.CharSequence, %20android.content.DialogInterface.OnClickListener) Pick-to: 6.5 6.4 6.2 5.15 Change-Id: I470acba581b7226b2d4a56754cf6372baa167eb4 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Android: Handle light/dark mode changesBartlomiej Moskal2022-10-262-3/+9
| | | | | | | | | | | | | | | | Update Theme's style according to current UiMode. New style.json file for dark mode was added (stored in separate subdirectory 'darkUiMode/'). Theme_DeviceDefault_DayNight[0] is used for extraction for API 29 or higher. Style is updated each time when UiMode is changed. [0]https://developer.android.com/reference/android/R.style#Theme_DeviceDefault_DayNight Task-number: QTBUG-83185 Pick-to: 6.4 6.2 Change-Id: Id26059231f41761d822d494ac6c641bf3cba3322 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Use SPDX license identifiers lefovers for some Java filesAssam Boudjelthia2022-10-046-211/+18
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. This amends 05fc3aef53348fb58be6308076e000825b704e58. Pick-to: 6.4 Change-Id: Ie6bbdcd0d764ce1295f45f2d41d7c1c1ab47d9a8 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Android: handle quoted args passed to an appAssam Boudjelthia2022-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | Currently, arguments passed to the app through applicationArguments extra bundle treat every space as an argument separator. This then doesn't handle the case where an argument is a space separated quoted multi-word. This is more apparent when androidtestrunner is passing test arguments to the app where an argument can be a test case with a data tag that contains a space, which then is treated as two separate tag names. This change makes sure that androidtestrunner quotes each argument, and the app doesn't split the arguments list by spaces, but rather passed the argument string directly to c++ where QProcess::splitCommand() is used to get the correct set of arguments that will be passed to main(). Pick-to: 6.4 6.3 6.2 Task-number: QTBUG-104730 Change-Id: I45d8ca979d90f2a383c84623f0eb2eec29bba727 Reviewed-by: Dimitrios Apostolou <jimis@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Add option to not include native libraries in APKTinja Paavoseppä2022-05-201-35/+38
| | | | | | | | | | | | | | | | | Sometimes it is not desirable to include the libraries in the APK, e.g. system and vendor apps could prefer having one set of libraries installed on the device. If unbundled deployment is specified, native libraries will not be included in the APK. With unbundled deployment, optional arguments can be passed to set the path to load the libraries on the device. [ChangeLog][Android][Deployment Changes] Adds option for Unbundled deployment, where native libraries are not packaged in the APK. Task-number: QAA-771 Change-Id: Ica51ef83a24dad58c7586bf610a58abe21fc1100 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android A11Y: handle LocationChanged event only for focused elementIvan Solovev2022-05-161-2/+2
| | | | | | | | | | | | | | | | | | LocationChanged event unconditionally triggered invalidateVirtualViewId call. That call results in TYPE_WINDOW_CONTENT_CHANGED Android event, which causes a lot of background processing. That is not correct, because LocationChanged event is generated by every accessible element, not only the one that has A11Y focus. This patch checks event->uniqueId(), and processes only events that come from the focused accessible element. Done-with: Mike Achtelik <mike.achtelik@gmail.com> Task-number: QTBUG-102594 Pick-to: 6.3 6.2 5.15 Change-Id: I6b941733c9d215fed5ee5a7aeeb5be234add9ebe Reviewed-by: Mike Achtelik <mike.achtelik@gmail.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Android: Fix ANR when QtService and QtActivity load in same processSamuel Mira2022-04-281-1/+12
| | | | | | | | | | | | | This patch is a fix to prevent the ANR. In this patch, the QtService queries QtNative if there is a QtActivity or QtService started and, in case there is, it does not begin the loading process. When that happens, the QtService will be a regular android Service. Fixes: QTBUG-99691 Pick-to: 5.15 6.2 6.3 Change-Id: Ibd8aa8554107a9744b53cca4e0dd7e6f9b25baea Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
* Fix restart QtActivitySamuel Mira2022-04-271-11/+22
| | | | | | | | | | | | | | | | | | Previously, a restart of QtActivity on Android would make the application fail with a blank screen. That happened because the QtActivity tried to reload the whole application and failed. With this patch, the QtActivity detects if the application is restarting by checking if QtNative and QtActivityDelegate are live and updates the connections on those objects accordingly. It allows the application to continue as before. In case that is not possible, the QtActivity will restart the application. Fixes: QTBUG-38971 Fixes: QTBUG-102298 Pick-to: 5.15 6.2 6.3 Change-Id: Id500d20b185d57b39d45d34eeaa99745a3c2b95b Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android A11Y: handle valueChanged eventsIvan Solovev2022-02-151-0/+5
| | | | | | | | | | | | | | | | | | | | | Before this patch Android A11Y implementation was missing ValueChanged event handling. As a result, no update was given when the element's value was changed. Handling these events allows us to announce value changes on such objects like Slider, SpinBox, etc... This is a universal method of value-change announcement, so it supports all sorts of A11Y gestures. On the Java side a new function was introduced to announce the values, because we need to use the actual element's *value*, not its accessible name or description. Task-number: QTBUG-93396 Pick-to: 6.3 6.2 5.15 Change-Id: Ic44abd5f01b9b6f5468962131466edaf6a49d498 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
* Android: extract parentId for hidden object in advanceIvan Solovev2022-02-091-2/+2
| | | | | | | | | | | | | | | | | | This commit amends 850a7f1238e84b6960a84e12687e40cf939a44d9. We can't extract the parentId for the hidden object on Java side, because the Java call is executed in a separate thread, so the original hidden object can be destroyed somewhere in the middle of parentId() call. As a workaround, we get the parentId in advance, on C++ side, and pass it as a parameter to JNI function. Task-number: QTBUG-95764 Pick-to: 6.3 6.2 5.15 Change-Id: Ied2ab4ab39b947f3f582575cf77cc76fbac9e274 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Recognize system apps also when apk has parent directoryTinja Paavoseppä2021-12-081-2/+7
| | | | | | | | | | | | | When checking if the apk is being deployed from system partition, account for possibility of the apk not being installed directly under /system/app or /system/priv-app, but in a directory of its own. Otherwise, system applications that are not directly under system app/ priv-app directories will not be recognized as system apps, meaning they will not use the system library path to load their libraries. Pick-to: 6.2 Change-Id: I1e778b18cae3c0406e087b8c78fd31d521f7be73 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Revert "Android: Place cursor correctly on screen when editing"Rami Potinkara2021-10-261-8/+3
| | | | | | | | | | | | | | | This reverts commit 5c6b10c3cee5737dbc041d0463220898c8120807. It caused a regression such that the main window no longer resized or panned when the VKB is shown, in spite of android:windowSoftInputMode being set. Pick-to: 6.2 5.15 Task-number: QTBUG-95300 Task-number: QTBUG-96117 Task-number: QTBUG-97503 Change-Id: If56e1113eea69a940f6760bdb2ad06a93a0759c1 Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Add error messages in case system library directory does not existAndreas Buhr2021-09-301-2/+10
| | | | | | | | | | | | | On Android, when the system library directory does not exist, no error message was given. This led in turn to error messages like Can't find 'nulllibQt6Core_armeabi-v7a.so' which are not very helpful. Pick-to: 6.2 Task-number: QTBUG-80766 Task-number: QTBUG-96701 Change-Id: I4187e4a68d9e78e198152306a3e664c30c51ab18 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Add information about who launched this activity to intentsLars Schmertmann2021-08-261-0/+18
| | | | | | | | | | | * With this change, applications can easily determine the source of an intent without creating an own extension of QtActivity. * https://developer.android.com/reference/android/app/Activity#getReferrer() Task-number: QTBUG-84382 Pick-to: 6.2 Change-Id: I6a5200af1d997640f02e2b934343914fb5f32ccc Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Make the manifest less to scary to read and editAssam Boudjelthia2021-07-011-37/+45
| | | | | | | | | | | | | | | | | Remove unnecessary elements from the manifest file, making it easier to manage and read. Mostly, the removed elements are more internal data that is populated by the build system and the user shouldn't have to worry or confront that. Also, use the same formatting used by Android Studio. [ChangeLog][Android] Remove some elements from the manifest file that are internal, to make it easier to deal with the manifest. Pick-to: 6.2 Change-Id: I6a1f275b579370972c0bf022502a8fbfe7d0bfd1 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Remove ministro codeAssam Boudjelthia2021-07-015-296/+1
| | | | | | | | | | | | | | Since Ministro no longer work on recent Android versions (Android 8+), and it hasn't been maintained and the repos are not updated, the existing code is practically a dead code. [ChangeLog][Android] Remove ministro code since it's been unmaintained and not working with recent Android versions. Task-number: QTBUG-85201 Pick-to: 6.2 Change-Id: I18d7b1e209cba3cfd04674060e9bf39aa5a5510f Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Silence misleading exception print in setQtContextDelegateAssam Boudjelthia2021-06-021-3/+1
| | | | | | | | | | | | | | As I understand it, the call to getDeclaredMethod seems to be just there to check if a given method is declared under before adding it to the delegates list, and that's why the getDeclaredMethod is not returning anything, so we could treat it as a failed check and not print anything. This is an amendment to 80f7494e8a9f9a70e3b53833a098d74d8c2331d9 which added this print. Pick-to: 6.1 5.15 Change-Id: I5f69ed5b4fa655da53ac7fba20d4e07acc75607a Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Android: Remove NoSuchMethodException errorPekka Gehör2021-05-101-0/+5
| | | | | | | | | | CleanUp NoSuchMethodException error(QtActivity.notifyQtAndroidPluginRunning) appears on application start up. Fixes: QTBUG-93620 Pick-to: 5.15 6.1 Change-Id: Ic835e00d02af17e1b48c0ff66d82e5957c635deb Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Remove NoSuchMethodException errorBartlomiej Moskal2021-04-271-0/+5
| | | | | | | | | | | CleanUp NoSuchMethodException error appears on application start up. Error appears after commit: e402e1103b874c0bf91a1bc754752ee73ffadf33 Fixes: QTBUG-92885 Change-Id: Idd4d09e51c8c721ad18f9bd396c990b51cd730e7 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Place cursor correctly on screen when editingPiotr Mikolajczyk2021-03-051-3/+8
| | | | | | | | | | | | When editing text the cursor is not placed correctly. So this has been achieved by tricking Android into thinking that the input area is only the line where the cursor is, so it is forced to keep it on screen. Fixes: QTBUG-91073 Pick-to: 5.15 Change-Id: Icc2e8315deb76ca1a84819d3fdceaa7b027b1174 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* [Android]: Fix exception when using Qt to create a service on AndroidLars Schmertmann2021-02-191-0/+13
| | | | | | | | Fixes: QTBUG-91194 Pick-to: 5.15 6.0 6.1 Change-Id: Idd243c17bf82150fe2ea8b0100f8c432d75ef249 Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Qml accessibility fixesPiotr Mikolajczyk2020-12-081-0/+15
| | | | | | | | | | | | | | | | | | - 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>
* Android: rename Android's package name for Qt 6Assam Boudjelthia2020-10-036-10/+10
| | | | | | | | | | 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>
* High-DPI: Remove legacy environment variablesTor Arne Vestbø2020-09-021-5/+0
| | | | | | | | | | | | | 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>
* Android: fix NoSuchMethodException exception in QtActivity.javaAssam Boudjelthia2020-08-071-0/+5
| | | | | | | | 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>
* Android: fix NoSuchMethodException exception in QtActivity.javaAssam Boudjelthia2020-08-051-0/+124
| | | | | | | | | | | | | | Adding these method definitions because QtApplication might fail to find them. Change 80f7494e8a9f9a70e3b53833a098d74d8c2331d9 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>
* Android: add missing printStackTrace() in catch statementsAssam Boudjelthia2020-07-141-0/+1
| | | | | | Pick-to: 5.15 Change-Id: Id50743113fcdd450932111cfe1a563276f152bb1 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Android: Pass a null Bundle when calling QtActivityDelegate.onCreateAndy Shaw2020-06-181-2/+5
| | | | | | | | | | 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>
* Android: Increase minimum API level to Android-23 / Android 6Eskil Abrahamsen Blomfeldt2020-03-041-7/+2
| | | | | | | | | | | | 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>
* Android: use the correct string resources for ok and cancelAssam Boudjelthia2020-02-031-2/+2
| | | | | | Fixes: QTBUG-76942 Change-Id: I0c0ccad4980a458ab291ca8ee533fadbedc90456 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Remove dead code to fix a lint warningLars Schmertmann2020-01-091-17/+0
| | | | | | | | | | | | | | | 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)
* Android: Do not extract QML assets dataBogDan Vatra2019-10-021-290/+5
| | | | | | | | | | | | | | 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>
* Say hello to Android multi arch build in one goBogDan Vatra2019-08-261-17/+60
| | | | | | | | | | | | | | 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>
* android: Properly indicate successful Qt installRob Samblanet2019-04-151-25/+75
| | | | | | | | | | | | | | | | | | | | | 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>
* Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-02-081-39/+20
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/android/templates/AndroidManifest.xml src/network/ssl/qsslsocket_mac.cpp src/widgets/styles/qstylesheetstyle.cpp tests/auto/corelib/kernel/qtimer/BLACKLIST tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp tests/auto/testlib/selftests/expected_blacklisted.lightxml tests/auto/testlib/selftests/expected_blacklisted.tap tests/auto/testlib/selftests/expected_blacklisted.teamcity tests/auto/testlib/selftests/expected_blacklisted.txt tests/auto/testlib/selftests/expected_blacklisted.xml tests/auto/testlib/selftests/expected_blacklisted.xunitxml tests/auto/testlib/selftests/expected_float.tap tests/auto/testlib/selftests/expected_float.teamcity tests/auto/testlib/selftests/expected_float.txt tests/auto/testlib/selftests/expected_float.xunitxml Done-With: Christian Ehrlicher <ch.ehrlicher@gmx.de> Done-With: Edward Welbourne <edward.welbourne@qt.io> Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io> Change-Id: If93cc432a56ae3ac1b6533d0028e4dc497415a52
| * Remove "/data/local/tmp/qt/" supportBogDan Vatra2019-01-311-39/+20
| | | | | | | | | | | | | | 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>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2019-01-261-1/+1
|\| | | | | | | | | | | | | | | Conflicts: src/android/templates/AndroidManifest.xml tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp Change-Id: I4c9679e3a8ebba118fbf4772301ff8fde60455b9
| * Fix libs dir location on arm64BogDan Vatra2019-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | 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>
* | Android: Set minimum supported version to android-21Eskil Abrahamsen Blomfeldt2019-01-231-1/+1
|/ | | | | | | | | | | | | | | | | | 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>
* Default to no style extraction on Android P when the target SDK is < 28Christian Strømme2018-10-081-4/+16
| | | | | | | | | | | | | | | | Applications with target SDK version lower then 28 running on a device with version greater or equal to 28 will cause compatibility warnings, so default to none when the extract_android_style value is set to default. Note that the new value "default" was introduced to allow this kind of changes in the future, i.e., selecting the best solution based on some simple heuristics. Adding a new value also keep compatibility and allows the user to explicitly set a value when needed. Task-number: QTBUG-69810 Change-Id: I68301716767870ce6de40e45742d9c5fc263ee25 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>