summaryrefslogtreecommitdiff
path: root/android
AgeCommit message (Collapse)Author
2023-11-19Another tweak in sample file imageryThorsten Behrens
Change-Id: I28ec7ebea974a17c6e0d48e680e0a3883c44fc10
2023-11-19Update sample fileThorsten Behrens
Change-Id: I5be3916601930bd9968a40e55c51320e99098d6e
2023-11-19Add a larger Writer example documentJan-Marek Glogowski
Change-Id: I4bc9a82c7f99563af8da62f889b51d1b583df760
2023-11-17android: Update app-specific/MIME type iconsMichael Weghorn
Just as commit 2105f638fa178f49210116bd914889599930b62a Author: Michael Weghorn <m.weghorn@posteo.de> Date: Fri Nov 17 09:11:42 2023 +0100 android: Update app icon to new startcenter icon updated the main icon for the Android app, also update the MIME type icons that are shown in the "Recent files" section in LibreOfficeUIActivity to the new ones meant to be used for Calc/Draw/Impress/Writer since 7.5. Change-Id: I1d969a290caa3c23589e78151cd5bf70144c3099 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159568 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-17android: Update app icon to new startcenter iconMichael Weghorn
Update the icon used for LibreOffice Viewer with the new icon used since LibreOffice 7.5 [1]. Use the startcenter icon from `sysui/desktop/icons/hicolor/` and export for the required resolutions where it doesn't exist yet. [1] https://wiki.documentfoundation.org/ReleaseNotes/7.5#Design Change-Id: Ie9f59d42bbc9375e7ca433c6452223b7ba3033a8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159554 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-17android: Reuse launcher icon in activitiesMichael Weghorn
Instead of duplicating the icon as drawable, just use the one from the mipmap folder that's used for the app launcher. Change-Id: Idd6691c4639fb570357280cec63636d07fe06b20 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159553 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-16android: Add missing make dependencyMichael Weghorn
After commit f9b9e702465b4de29153b49e077c70a0ad78c89d Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Nov 15 13:26:38 2023 +0100 android: Add button to open privacy URL , Android Jenkins builds started to fail intermittently (e.g. [1]) like this: > Task :stripStrippedUIEditingDebugDebugSymbols > Task :compileStrippedUIEditingDebugJavaWithJavac FAILED /home/tdf/lode/jenkins/workspace/android_x86/android/source/src/java/org/libreoffice/AboutDialogFragment.java:93: error: cannot find symbol final String privacyUrl = BuildConfig.PRIVACY_POLICY_URL; ^ symbol: variable PRIVACY_POLICY_URL location: class BuildConfig Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. 1 error FAILURE: Build failed with an exception. This seems due to the pre-existing issue of a missing dependency of the `liboSettings.gradle` target on `android/Bootstrap/Makefile.shared`, so a change to the latter would not have caused the former to be regenerated and any old one still around that didn't set the new build config variable would get used, resulting in the above error. Issue reproducible locally: * do a local Android master build * `git revert f9b9e702465b4de29153b49e077c70a0ad78c89d` * `rm android/source/liboSettings.gradle` * `make` * `git cherry-pick f9b9e702465b4de29153b49e077c70a0ad78c89d` * `make` [1] https://ci.libreoffice.org/job/gerrit_android_x86/33773/console Change-Id: I87275fc71d93f460dfad4d75fc197b8ed8cd9922 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159497 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-15android: Add button to open privacy URLMichael Weghorn
In the About dialog, add a "Privacy Policy" button when a privacy URL is set, i.e. the `--with-privacy-policy-url=<URL>` autogen option is used. Clicking the button will fire an Intent to open that URL. Use a custom build config field as described at [1] to make the privacy policy URL available to the Java code. [1] https://developer.android.com/build/gradle-tips#share-custom-fields-and-resource-values-with-your-app-code Change-Id: I6e1a9aff885e4ce132284f49e722b3343fc51b79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159445 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-15android: Drop "More Info" item in "About" dialogMichael Weghorn
Drop the "More Info" button from the dialog, which opened a sample document with more information about LibreOffice. There's already a link to the website, and the "neutral" button in that dialog will be reintroduced to show the privacy policy instead, if set. (An `AlertDialog` has at most 3 buttons.) Change-Id: Ib760daba1ed6f8cfc26eefc7412553bf97c77d70 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159444 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused LayerView#mFullScreenMichael Weghorn
... and the getters and setters. Change-Id: I14e69e2543d92dc63954bc3faf5a7456d2343fff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159200 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop Robocop commentMichael Weghorn
Robocop is a tool for UI-testing fore Firefox on Android [1], but not used for LibreOffice Viewer, so drop the misleading comment. [1] https://wiki.mozilla.org/Auto-tools/Projects/Robocop Change-Id: I270735b2258f18691f60865c683856d58a94bb04 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159199 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop never-assigned to LayerRenderer#mPixelBufferMichael Weghorn
That member was never assigned a value but only read from by code claiming to be "used by robocop for testing purposes". [1] describes Robocop as a UI-level testing framework for Firefox for Android, which we don't use, so drop the class member and related test code. [1] https://wiki.mozilla.org/Auto-tools/Projects/Robocop Change-Id: I467296874d4295060cc9670d1f1c8b0dfeb77523 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159198 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09tdf#158125 android: Don't insist on RGB 565 EGL configMichael Weghorn
As the `eglChooseConfig` doc [1] says: > eglChooseConfig returns in configs a list of all EGL frame buffer > configurations that match the attributes specified > [...] > Attributes are matched in an attribute-specific manner. Some of the > attributes, such as EGL_LEVEL, must match the specified value exactly. > Others, such as, EGL_RED_SIZE must meet or exceed the specified minimum > values. The config/attribute list used for Android Viewer specifies EGL_RED_SIZE=5, EGL_GREEN_SIZE=6, and EGL_BLUE_SIZE=5 and so far, only configs using exactly those bit sizes were accepted, causing 1 of the 11 devices used in automated tests in Google Play CI crashing with this stack trace: Exception org.mozilla.gecko.gfx.GLController$GLControllerException: No suitable EGL configuration found at org.mozilla.gecko.gfx.GLController.chooseConfig (GLController.java:219) at org.mozilla.gecko.gfx.GLController.initEGL (GLController.java:172) at org.mozilla.gecko.gfx.GLController.initEGLContext (GLController.java:176) at org.mozilla.gecko.gfx.GLController.initGLContext (GLController.java:57) at org.mozilla.gecko.gfx.RenderControllerThread.doSurfaceCreated (RenderControllerThread.java:132) at org.mozilla.gecko.gfx.RenderControllerThread.execute (RenderControllerThread.java:52) at org.mozilla.gecko.gfx.RenderControllerThread.run (RenderControllerThread.java:30) Since only configs fulfilling the minimium specification have been returned, I don't see a reason to insist on having one that uses exactly the specified amount of bits for the individual color components. I also didn't see any rendering issues in a quick test (also using the colorful Calc sheet attachment 188343 from tdf#156182) forcing the use of a configuration using EGL_RED_SIZE=8, EGL_GREEN_SIZE=8, and EGL_BLUE_SIZE=8 with an x86_64 AVD and on a Fairphone 3+ (arm64) using this temporary local change: diff --git a/android/source/src/java/org/mozilla/gecko/gfx/GLController.java b/android/source/src/java/org/mozilla/gecko/gfx/GLController.java index 45600e9f1e7c..9e7f348e9e72 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/GLController.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/GLController.java @@ -171,7 +171,7 @@ public class GLController { mEGL.eglGetConfigAttrib(mEGLDisplay, config, EGL10.EGL_RED_SIZE, red); mEGL.eglGetConfigAttrib(mEGLDisplay, config, EGL10.EGL_GREEN_SIZE, green); mEGL.eglGetConfigAttrib(mEGLDisplay, config, EGL10.EGL_BLUE_SIZE, blue); - if (red[0] == 5 && green[0] == 6 && blue[0] == 5) { + if (red[0] == 8 && green[0] == 8 && blue[0] == 8) { return config; } } Therefore, fall back to using another config that fulfils the specification. (Leave the previously required config as preferred one for now, maybe it still has advantages, e.g. might be more efficient due to not wasting extra bits for the color components that are not needed for the rendering in LibreOffice Viewer. (?)) [1] https://registry.khronos.org/EGL/sdk/docs/man/html/eglChooseConfig.xhtml Change-Id: I953d292248004bc6f7e9384ceef78c8a88c21e9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159204 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android a11y: Add content labelsMichael Weghorn
Add a few content labels, so screen readers can present these UI elements in a more meaningful way. Reported by Google Play CI: > This item may not have a label readable by screen readers. > Learn more [1] [1] https://support.google.com/accessibility/android/answer/7158690 Change-Id: Ic8e8885ed132367426207fad652e324ea4eb0790 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159206 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop obsolete TODO commentMichael Weghorn
This comment was originally for the code underneath, that has already been separated into a separate method in gecko-dev commit [1] commit 60ed20fee4095523ee498579c71fc17032d1004b Author: Patrick Walton <pwalton@mozilla.com> Date: Mon Feb 13 12:27:09 2012 -0800 Split out Java compositor shader program activation and deactivation into separate functions , but the comment was left behind. [1] https://github.com/mozilla/gecko-dev/commit/60ed20fee4095523ee498579c71fc17032d1004b Change-Id: Ied0a4aaec4d8228665748b834026b54c8e9615bc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159184 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused GLController#checkForLostContextMichael Weghorn
Change-Id: Ia9f313a1937d4d491b76e9e5d6e4689eeb20431b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159183 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Cast to GL10 in getter, not callersMichael Weghorn
Better have a clear method signature than callers relying on implementation details. Change-Id: I4532f67aee8f8eac723401e43d3b6856ba37b346 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159182 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Use local var instead of 'mGL' memberMichael Weghorn
It's never used except where it's also previously assigned, so use a local variable instead. Even the getter `GLController#getGL` gets it from the EGLContext instead of using the member. Change-Id: Icec909f6e3e508a16fb455e81474bb336dc09362 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159181 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Use local var instead of class memberMichael Weghorn
It's only used in this one place. Change-Id: Ia11ebc2ea60c4015698ac00bbec6711a20c0a22e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159168 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused LayerRenderer#Frame#getMaskForLayerMichael Weghorn
Unused since commit 96a498b44c0a0ca48ac9938d9414191850d47d18 Date: Fri Dec 19 16:24:02 2014 +0900 android: remove screenshot layer Change-Id: I3b83596bb854cb4bdfc6281ca487c8be15bc61d0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159167 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop LayerRenderer#Frame#mFrameStartTimeMichael Weghorn
The member is assigned a value that is never used, so just drop it. Might have been more useful before commit 8734422b0b85b54c3fccc2b678171ed174c2b8bd Date: Mon Feb 23 20:53:35 2015 +0900 android: remove DrawTimingQueue and PanningPerfAPI Change-Id: Ieec958c0d5a75fc47af467c73b218d6150ceaab4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159166 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Inline LayerRenderer#createFrameMichael Weghorn
No need for an extra method just to call the ctor, and which is only used once. Change-Id: Ide909ad81c78dc822a721771ee068e0240750089 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159165 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Add "@Override"Michael Weghorn
... to make clear that these are overriden methods from the `GLSurfaceView.Renderer` interface. Change-Id: I7ffc47ee8a7ca4b481f7d28c0a5084c89d9c7ae8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159164 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop misleading comments wrt methods invoked via JNIMichael Weghorn
These methods are not invoked via JNI for LibreOffice Viewer. It might have been true for Fennec/Gecko, but isn't here, so drop the misleading comments. Change-Id: Ib3187b129f076f42706b3097f9535a7cca7ad55f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159163 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused LayerView#registerCxxCompositorMichael Weghorn
The comment saying it's called via JNI is not true for LibreOffice Viewer, is probably from Gecko/Fennec days like the ones for previously dropped methods. Now that the method is gone, `mContext` no longer needs to be static, so make it non-static and drop the corresponding TODO comment. Change-Id: I32db3728234715bc29af1ad757c715003c70ca4b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159162 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused LayerView#{g,s}etPaintStateMichael Weghorn
... and the now also unused `mPaintState` member and related constants. Change-Id: Iefd40ca4a72d32807b136830833e88e250f8f38b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159161 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused GLController#waitForValidSurfaceMichael Weghorn
The method is unused, so drop it, and also the now never read `mSurfaceValid` member. Likely, the comment that the method is invoked via JNI was never valid for LibreOffice Viewer, but is from Gecko/Fennec days, similar to the case in the previous commit, Change-Id I54dd33a2ce30ebdc375a7c1fefacca6e99d2f571 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Nov 8 15:10:19 2023 +0100 android: Drop unused GLController#resumeCompositorIfValid etc. Change-Id: I165d2c7ebf5b9ce940b608d738d9a10d5bef69ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159160 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused GLController#resumeCompositorIfValid etc.Michael Weghorn
The comment claiming that this function is invoked by JNI was true when the method was added upstream in Fennec/Gecko in commit [1] commit ae9420729da323d02a3f2f02d5a4b3043a619007 Author: Kartikaya Gupta <kgupta@mozilla.com> Date: Fri Jul 13 10:19:46 2012 -0400 Bug 769269 - Update the graphics code to be able to deal with blowing away the layer controller, client, and view and creating them afresh. r=ajuma , but it's not true for the copy here in Android Viewer, so drop the unused method and `RenderControllerThread#compositionResumeRequested` that would only have been called from there and wouldn't have done anything anyway. [1] https://github.com/mozilla/gecko-dev/commit/ae9420729da323d02a3f2f02d5a4b3043a619007 Change-Id: I54dd33a2ce30ebdc375a7c1fefacca6e99d2f571 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159159 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-09android: Drop unused GLController#provideEGLSurfaceMichael Weghorn
It was already unused when added in commit a6ecd8b2a9f0f3eaa66388861a6dcc6260ec72b9 Date: Thu Jun 26 11:22:21 2014 +0200 LOAndroid3: ant/make for building, Bootstrap project The method looks similar to the first half of `GLController#provideEGLSurface` and is unused, so drop it. Change-Id: I0cabfddefcdcca97048cb6f494590afdde5c1dc7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159158 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07android: Don't add "-editing" suffix to version/vendorMichael Weghorn
Don't append "-editing" to the version string, which would then end up to be something like "24.2.0.0.alpha0+/7763190f7ec2/The Document Foundation-editing" when the build was configured with `--with-vendor="The Document Foundation"` and would result in the "About" dialog/widget saying "This release was supplied by The Document Foundation-editing." (s. `AboutDialogFragment#onCreateDialog`). While it's useful to have the different build flavors (with or without the experimental editing support), I see no need to have the build config reflected in the version string. (Whether experimental editing support was enabled during the build can easily be seen by checking whether the "Experimental Mode" option is available in the settings.) Change-Id: I48ddb3a842b9db4fc1f435683ed9d8e8e85898ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159079 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-09-21tdf#147906 used StrictMath.hypot for Pythagorean additionapurvapriyadarshi
Change-Id: I529dc199c2cc20ce91b7181f650c36db8d81fc9c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157098 Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl> Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2023-09-01android: Update Android Gradle Plugin to 8.1.0Michael Weghorn
... and gradle to 8.0, as suggested by Android Studio. Also, as suggested, let the upgrade assistant set the following properties to keep the previous behavior for these for now instead of applying the new default behavior: android.defaults.buildfeatures.buildconfig=true android.nonFinalResIds=false android.nonTransitiveRClass=false Those may be revisited in a follow-up step. See the Android Gradle Plugin release notes [1] for more details on the properties. [1] https://developer.android.com/build/releases/past-releases/agp-8-0-0-release-notes Change-Id: Iec2f5766c0888e0f38438290b8fd814494afd837 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155376 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-07android: Update com.google.android.material to 1.9.0Michael Weghorn
Change-Id: I52b2060cbf1f8eb06a49c58b8d35461aec99f3a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155375 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-03-13android: Update Android Gradle Plugin to 7.4.2Michael Weghorn
Change-Id: Idee4fddd7fd2b610fef194b86ace88469c3124da Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148749 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-28add ipv6 enabled maven repositoryChristian Lohmaier
maven central so far doesn't support ipv6 on the primary URL (see https://issues.sonatype.org/browse/MVNCENTRAL-658 ), it is only enabled on a dedicated ipv6.repo1.maven.org URL currently. Add that one to the list of repositories so that ipv6-only hosts can also fetch the dependencies. (when using internal ipv4 as well, you'll also need to export JAVA_OPTS="-Djava.net.preferIPv6Addresses=true" since otherwise the gradle wrapper fails to download gradle) Change-Id: I22f0e07fd4e6bb518396f76db20c174e45588372 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147917 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2023-02-17android: Update com.google.android.material to 1.8.0Michael Weghorn
Change-Id: I2e2049c5d832aa9ea82feaabf3a86fd8c87a9668 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147197 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-17android: Drop unused TextureViewMichael Weghorn
It's unused since commit 3860bff1013f9608b934c4cdb9ddb8d2dbbc3e52 Date: Fri Dec 19 16:25:23 2014 +0900 android: never use TextureView for now (for performance reasons) Get align with latest Fennec code which also has this disabled. Change-Id: Ie4c27935bacd29218207e47593f073bdce0cf7e3 Change-Id: I808ce73928120c10f4e3721a11b1e74bac3a413c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147196 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-17android: Drop unused LayerView#isIMEEEnabledMichael Weghorn
... that always returns false anyway. (And the `InputConnectionHandler#isIMEEnabled` that would be called in the commented out code doesn't exist either.) Change-Id: I6031672ee2835c64a1efcab946574ca2ce94b6a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147195 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-16android: Use libc++_shared path that works for NDK 25, tooMichael Weghorn
While e.g. NDK 23.0.7599858 has both, `$HOME/Android/Sdk/ndk/23.0.7599858/sources/cxx-stl/llvm-libc++/libs/x86/libc++_shared.so` and `$HOME/Android/Sdk/ndk/23.0.7599858/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/libc++_shared.so` (with the same content), NDK 25.1.8937393 no longer ships that under the former path scheme, just the latter. Therefore, use that one when copying the library, in preparation to add support for NDK 24 and 25. Change-Id: I20894701f4f436f41781467b57ec4f5311a8317f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146133 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-16android: Use actual Android API level for minSdkVersion, nssMichael Weghorn
When an Android API level is explicitly set with the `--with-android-api-level` switch introduced in commit 4c0bccbb21ba022fd9d630eb1d9ae34673b4dc11 Date: Thu Jul 4 09:06:49 2019 +0200 android: Allow specification of the API level. , use that for the minSdkVersion for the Android Viewer app and the API level for the NSS build, rather than leaving that hard-coded at API level 16. Building with a newer API level means that the app won't run on devices with older API levels. With this in place, this will be recognized at install time (installation will fail: INSTALL_FAILED_OLDER_SDK) rather than crashing at run time. Change-Id: Id6047b768d265b965696f3a3161d7828e5f3696e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146127 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-16android: Require NDK 23 and use default linker lldMichael Weghorn
Using lld instead of hard-coding ld.gold speeds up linking liblo-native-code.so from about 40 seconds to about 10 seconds for my x86 debug Android build with NDK 23.2.8568313. lld was added in NDK 21, made default in NDK 22 [1]. lld doesn't know the `--no-keep-files-mapped` option, so drop that as well. ld.gold had previously been hard-coded in commit c6dadf5035c8e1c31dbd3fccec167bd4a906bf54 Date: Fri Nov 1 17:57:17 2019 +0100 android: Fix linking of liblo-native-code.so on aarch64. , but lld wasn't available yet back then. To make sure that lld is used by default, NDK >= 22 has to be used. In addition, due to a clang bug in NDK 22.1.7171670 [2] ("Misspelled -fnostack-clash-protection"), building for aarch64 Android with that NDK version would fail as follows: clang++: error: unknown argument '-fno-stack-clash-protection'; did you mean '-fnostack-clash-protection'? clang++ version: $ /home/michael.weghorn/Android/Sdk/ndk/22.1.7171670//toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --version Android (7155654, based on r399163b1) clang version 11.0.5 (https://android.googlesource.com/toolchain/llvm-project 87f1315dfbea7c137aa2e6d362dbb457e388158d) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/michael.weghorn/Android/Sdk/ndk/22.1.7171670//toolchains/llvm/prebuilt/linux-x86_64/bin Rather than work around that bug on LO side, require NDK 23.x right away, since that provides a clang where this is fixed. Both, non-debug as well as `--enable-dbgutil` builds with NDK version 23.2.8568313 were successfully tested for all 4 supported architectures and these devices: * aarch64: Fairphone 3 Plus, LineageOS 19 (Android 12), API 31 * arm32: Samsung Galaxy S4 I9505, LineageOS 17.1 (Android 10), API 29 * x86: * AVD: Nexus 4, API 16 * AVD: Pixel 2, API 30 * x86_64: AVD: Pixel 2, API 33 [1] https://developer.android.com/ndk/downloads/revision_history [2] https://bugs.llvm.org/show_bug.cgi?id=47139 Change-Id: I9ea714255faf29d50bb5f8e206f13495637da867 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146119 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-09android: Update Android Gradle Plugin to 7.4.1Michael Weghorn
Change-Id: I2a709e27d3ba42f0d1c2ae9510d2cbf1f38c484d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146682 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-02-06tdf#147906 Use Math.hypot() for Pythagorean additionYomnasalama
Change-Id: I644947ca22f493bbc805c45334450db8d4b4808b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146137 Tested-by: Hossein <hossein@libreoffice.org> Reviewed-by: Hossein <hossein@libreoffice.org>
2023-01-18android: Hide UI to creat new files for SDK version < 19Michael Weghorn
Just like for the the case where editing is disabled (s. Change-Id I2f8c86f5db96a5135ff8a66a7a7078b664d05a5e, "android: Only offer creating docs when editing enabled"), just hide the UI to create new files when running on devices that don't support `Intent.ACTION_CREATE_DOCUMENT`, rather than showing the button, but then showing a message that creating files is not supported once the button is clicked. Change-Id: Ifedf40e22dc8906557d5364ecf9ec3a9db2315e6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145736 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-18android: Only offer creating docs when editing enabledMichael Weghorn
Hide the UI to create new documents unless the experimental editing mode is enabled. There is little use in creating new empty documents when there is no way to edit them... Change-Id: I2f8c86f5db96a5135ff8a66a7a7078b664d05a5e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145735 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-18android: Update Android Gradle Plugin to 7.4.0Michael Weghorn
... and gradle to 7.5. Change-Id: If5156ab18dc500dafdfa4f8a0f6e6c2563acc4db Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145711 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-17tdf#153058 android: Use "fit page" for min zoom levelMichael Weghorn
So far, Android Viewer was using "fit page width" as minimum zoom level, meaning that it was impossible to zoom out to see the full page, e.g. when opening a doc with page size A4 portrait and using the device in landscape mode. Change the minimum zoom level to take the page height into account as well, i.e. adapt the minimum zoom level to be "fit whole page" to allow doing that. However, keep applying "fit page width" as zoom level when double-tapping, by using the "fit page width" zoom level as new default zoom level and applying the default instead of the minimum zoom level on double-tap. ("Fit page width" is probably more desirable than "fit whole page" at least when used on small devices, at least in all cases where writing is in horizontal direction, so the user can see the current portion of text and scroll down to continue reading/writing.) Use on double-tap is currently the only use for the default zoom level, the only previous occurence was effectively unused since commit 9ab43aebad67383057d2cc3f754ce2193fa78b4e Date: Wed Dec 4 17:18:20 2019 +0100 android: Allow zooming for Calc as well and finally dropped with Change-Id I702874f1d9161e5cef660bb4c4a0b7864d6e3c09 ("android: Drop superfluous ZoomConstraints#mAllow{,DoubleTap}Zoom"). Change-Id: Ica5d8207bc19a81173143fcb5c3747dc89f9fa81 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145658 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-17android: Drop superfluous ZoomConstraints#mAllow{,DoubleTap}ZoomMichael Weghorn
Both members are always set to true since commit 9ab43aebad67383057d2cc3f754ce2193fa78b4e Date: Wed Dec 4 17:18:20 2019 +0100 android: Allow zooming for Calc as well , so drop the two now superfluous members and getters. Change-Id: I702874f1d9161e5cef660bb4c4a0b7864d6e3c09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145657 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-17tdf#153009 android: Include more doc layout related XML filesMichael Weghorn
instdir/share/config/soffice.cfg/simpress/objectlist.xml contains default positions for elements that are used in new Impress presentations, but that file wasn't included in the Android app/APK previously, so couldn't be read from in `SdDrawDocument::InitObjectVector`. As a result, the title and text were misplaced when creating a new presentation in Android Viewer. Include all of the related Impress XML files into the app to make this work as expected. (At least a failed attempt to read from `layoutlist.xml` was also observed while debugging the issue mentioned above.) Change-Id: Iba1ac68c0b983d3e465515f07b3fc67162a0ee3f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145621 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-17tdf#153009 android: Set BRAND_SHARE_SUBDIR for more default structureMichael Weghorn
Set `BRAND_SHARE_SUBDIR=share` in the `fundamentalrc` shipped with Android Viewer, as is the case for the desktop variant as well. This implies that the .ui files will be expected underneath the "config/share" directory in the app's assets from now on instead of just "config", since `BRAND_SHARE_SUBDIR` will be expanded accordingly in the paths. Therefore, put the .ui files there. Merge the block responsible for copying UI files into into the existing block already copying to that dir in the `copyTask` gradle task. There seems to be no particular reason for omitting the "share" subdirectory just for the .ui files in the Android assets. This is also in preparation of fixing tdf#153009: Not having `BRAND_SHARE_SUBDIR` set on Android resulted in "vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/objectlist.xml" previously getting expanded to file:///assets//config/soffice.cfg/simpress/objectlist.xml in `SdDrawDocument::InitObjectVector`, and that would cause failure to read object property settings (e.g. for the placeholder text in a new Impress presentation) from that file, even when `objectlist.xml` was put into the app's assets (s. Change-Id Iba1ac68c0b983d3e465515f07b3fc67162a0ee3f, "tdf#153009 android: Include more doc layout related XML files") at "config/soffice.cfg/simpress/objectlist.xml" due to the double-slash after "assets" not being treated the same way as a single slash at that place. Change-Id: Ia9d86e1f59daf8a41951cefb3a1e9f82f0e9f184 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145619 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>