Package Details: android-armv7a-eabi-qt5 5.15.2-2

Git Clone URL: https://aur.archlinux.org/android-armv7a-eabi-qt5.git (read-only, click to copy)
Package Base: android-armv7a-eabi-qt5
Description: Qt 5 for Android
Upstream URL: https://www.qt.io
Licenses: GPL3, LGPL
Groups: android-qt5
Submitter: hipersayan_x
Maintainer: None
Last Packager: hipersayan_x
Votes: 18
Popularity: 0.000000
First Submitted: 2018-11-22 19:15 (UTC)
Last Updated: 2021-03-14 20:02 (UTC)

Dependencies (26)

Sources (4)

Pinned Comments

hipersayan_x commented on 2021-07-07 15:06 (UTC) (edited on 2021-07-07 15:10 (UTC) by hipersayan_x)

I'll drop this package, I been thinking and there are a lot of strong reasons not to waste any time maintaining it.
KDE doesn't provide an easy way to download the entire Qt source code in a single package, like in the official Qt releases.
Also, KDE doesn't provides tagged versions, I've to keep tracking manually the latest commits, or converting it to a git package.
It will require to split this package into 47x4 packages, 47 Qt modules and 4 architectures to maintain, that's 188 packages to maintain, absurd!
Cloning a git repository is slower than just downloading a source package file, making the build even much slower and painful.
Is a lot of work for something that will be dead in 1 year or 2 at most.
Good luck to the one that will step up to take care of this monstrosity, to the rest of developers, don't be lazy and consider switching to Qt6.

Latest Comments

« First ‹ Previous 1 .. 4 5 6 7 8 9 10 11 12 Next › Last »

Martchus commented on 2018-08-31 21:57 (UTC) (edited on 2018-08-31 22:02 (UTC) by Martchus)

Found the cause for the runtime issues with my app. Let's say it is not a good idea to apply the usual CLI argument parsing under Android :-) But the actual crash was caused by bundling the wrong C++ standard libraries.


So if anybody is interested, here's an adjusted version of this package and some further libraries (OpenSSL, Kirigami, libiconv) for Android: https://github.com/Martchus/PKGBUILDs

The following things already seem to work:

  • Building APK's with qmake and CMake/ECM
  • Deploying a qmake project using Qt Creator
  • Using Qt Network, Qt Sensors, Qt Svg, Qt Quick, Qt Quick Controls 1, Qt Quick Controls 2
  • Using OpenSSL directly, eg. to do some AES crypto
  • Make an HTTPS request via QNetworkAccessManager and OpenSSL
  • Using Kirigami
  • Opening files via std::fstream.

Other things doesn't seem to be supported very well:

  • Deploying a CMake project using Qt Creator
  • I was hoping FileDialog would open Android's native file selection. However, it only shows some custom, horribly to use dialog.
  • The issue mentioned in my previous comment.
  • Not having to specify an insane number of CMake variables. Eg. I couldn't figure out why I had to set Qt5Core_DIR when using the ECM toolchain file.

(Note that I have actually only tested the arm64-v8a variant. But I don't think it makes a difference.)

So the next step is further testing with the other architectures. Providing some wrapper scripts similar to mingw-w64-cmake would be nice, too.


If anybody wants binaries for arm64-v8a: https://martchus.no-ip.biz/repo/arch/ownstuff/os/x86_64
Note that the repo misses some dependencies like the SDK/NDK. That's due to license issues (at least I'm not 100 % sure whether I'm allowed to redistribute).

Martchus commented on 2018-08-31 13:36 (UTC) (edited on 2018-08-31 13:37 (UTC) by Martchus)

I created a simple CMakeLists.txt for Qt's accelbuddle example and it works also when using CMake.

So the runtime crash I mentioned in my previous comment is definitely only caused by my own code or the use of Qt Quick Controls 2, Kirigami or OpenSSL.

However, with the latest version of extra-cmake-modules I ran into another compile issue: The JSON file for androiddeployqt is invalid (see https://phabricator.kde.org/D11776).

Martchus commented on 2018-08-14 08:45 (UTC)

@hipersayan_x No. As a start I would simply create a PKGBUILD for additional libraries and even the final APK. So when building a new version of Qt, I'll also rebuild those packages and at least know that the build still works. Not sure about automated testing of the runtime. That would require starting the Android emulator and clicking around in the app. It would be something for openQA, but implementing such tests and an Android emulator backend would be a lot of work. Likely there's already an easier solution out there. But so far I'm stuck with the problem that my app doesn't even launch.

BTW, that are some log lines I've got with adb:

W linker  : /data/data/org.martchus.passwordmanager/qt-reserved-files/plugins/platforms/android/libqtforandroid.so: unused DT entry: type 0xf arg 0x8d98
W linker  : /data/data/org.martchus.passwordmanager/qt-reserved-files/plugins/platforms/android/libqtforandroid.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Gui.so: unused DT entry: type 0xf arg 0x5a9af
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Gui.so: unsupported flags DT_FLAGS_1=0x81
I Qt      : qt started
W linker  : /data/data/org.martchus.passwordmanager/qt-reserved-files/plugins/bearer/libqandroidbearer.so: unused DT entry: type 0xf arg 0x16c6
W linker  : /data/data/org.martchus.passwordmanager/qt-reserved-files/plugins/bearer/libqandroidbearer.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Network.so: unused DT entry: type 0xf arg 0x1402b
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Network.so: unsupported flags DT_FLAGS_1=0x81
I QtCore  : Start
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Widgets.so: unused DT entry: type 0xf arg 0x6cd4d
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Widgets.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5QuickControls2.so: unused DT entry: type 0xf arg 0x864b
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5QuickControls2.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Quick.so: unused DT entry: type 0xf arg 0x4b159
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Quick.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unused DT entry: type 0xf arg 0x31c21
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Quick.so: unused DT entry: type 0xf arg 0x4b159
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Quick.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unused DT entry: type 0xf arg 0x31c21
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5QuickTemplates2.so: unused DT entry: type 0xf arg 0x23ea0
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5QuickTemplates2.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unused DT entry: type 0xf arg 0x31c21
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Quick.so: unused DT entry: type 0xf arg 0x4b159
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Quick.so: unsupported flags DT_FLAGS_1=0x81
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unused DT entry: type 0xf arg 0x31c21
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libQt5Qml.so: unsupported flags DT_FLAGS_1=0x81
I art     : Background sticky concurrent mark sweep GC freed 10369(1182KB) AllocSpace objects, 3(60KB) LOS objects, 50% free, 2024KB/3MB, paused 1.974ms total 143.783ms
I art     : Do partial code cache collection, code=6KB, data=29KB
I art     : After code cache collection, code=6KB, data=29KB
I art     : Increasing code cache capacity to 128KB
I art     : Compiler allocated 4MB to compile void org.qtproject.qt5.android.bindings.QtLoader.startApp(boolean)
W art     : Suspending all threads took: 15.521ms
I art     : Background partial concurrent mark sweep GC freed 12414(1152KB) AllocSpace objects, 21(428KB) LOS objects, 39% free, 2MB/4MB, paused 17.472ms total 351.455ms
I art     : Background sticky concurrent mark sweep GC freed 11919(1210KB) AllocSpace objects, 20(476KB) LOS objects, 33% free, 2MB/4MB, paused 2.415ms total 262.185ms
I art     : Background partial concurrent mark sweep GC freed 10895(970KB) AllocSpace objects, 18(488KB) LOS objects, 40% free, 2MB/4MB, paused 1.179ms total 105.831ms
W gralloc_ranchu: Gralloc pipe failed
D         : HostConnection::get() New Host Connection established 0x76f2a752a0, tid 3741
D         : HostConnection::get() New Host Connection established 0x76f2a75120, tid 3764
I OpenGLRenderer: Initialized EGL, version 1.4
D OpenGLRenderer: Swap behavior 1
W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D OpenGLRenderer: Swap behavior 0
W linker  : /data/app/org.martchus.passwordmanager-1/lib/arm64/libpasswordmanager.so: is missing DT_SONAME will use basename as a replacement: "libpasswordmanager.so"
W         : (null):0 ((null)): exit app 0
D         : HostConnection::get() New Host Connection established 0x77001b2ca0, tid 3761

So I'm actually using the 64-bit ARM version. There are a lot of linker warnings, but I also get these when compiling and running the Accel Bubble example which runs fine despite the warnings. Unfortunately the log doesn't really give me a clear error message. Maybe I should test with a simpler CMake-based app first (no Kirigami and OpenSSL).

hipersayan_x commented on 2018-08-14 04:00 (UTC) (edited on 2018-08-14 04:00 (UTC) by hipersayan_x)

@spac, it may be possible (if Google did not removed the API), try setting ANDROID_MINIMUM_PLATFORM=16.
@Martchus, are you using some CI to test the builds?

Martchus commented on 2018-08-13 14:33 (UTC)

@spac Please format the output.

BTW: I now tested with a simple qmake-based example project and it actually runs. Unfortunately I couldn't fix the runtime issues with my project using CMake, ECM, OpenSSL and Kirigami so far.

spac commented on 2018-08-13 13:58 (UTC)

Since Qt 5.11 requires Android 5 as a minimum, is it possible to recompile the version 5.10.1 which works with android 4.x.

I try the following

git clone https://aur.archlinux.org/android-qt5-armeabi-v7a.git cd android-qt5-armeabi-v7a git checkout a65482538ca6 makepkg

but it shows the error almost immediately. Is it possible to fix it? Error: ==> Making package: android-qt5-armeabi-v7a 5.10.1-1 (Mon Aug 13 16:53:39 2018) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Retrieving sources... -> Found qt-everywhere-src-5.10.1.tar.xz -> Found geoservices.pro.patch -> Found JavaScriptCore.pri.patch -> Found JavaScript.Platform.h.patch ==> Validating source files with md5sums... qt-everywhere-src-5.10.1.tar.xz ... Passed geoservices.pro.patch ... Passed JavaScriptCore.pri.patch ... Passed JavaScript.Platform.h.patch ... Passed ==> Extracting sources... -> Extracting qt-everywhere-src-5.10.1.tar.xz with bsdtar ==> Starting prepare()... ==> Removing existing $pkgdir/ directory... ==> Starting build()... + cd qtbase + /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/configure -top-level -confirm-license -opensource -silent -prefix /opt/android-qt5/5.10.1/armeabi-v7a -docdir /opt/android-qt5/5.10.1/armeabi-v7a/doc -xplatform android-g++ -nomake tests -nomake examples -android-ndk /opt/android-ndk -android-sdk /opt/android-sdk -android-ndk-host linux-x86_64 -android-toolchain-version 4.9 -skip qttranslations -skip qtserialport -no-warnings-are-errors -no-pkg-config -qt-zlib -qt-freetype -android-arch armeabi-v7a -android-ndk-platform android-16 -skip qtconnectivity Creating qmake... /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:101:12: error: 'int renameat2(int, const char, int, const char, unsigned int)' was declared 'extern' and later 'static' [-fpermissive] static int renameat2(int oldfd, const char oldpath, int newfd, const char newpath, unsigned flags) ^~~~~~~~~ In file included from /usr/include/c++/8.2.0/cstdio:42, from /usr/include/c++/8.2.0/ext/string_conversions.h:43, from /usr/include/c++/8.2.0/bits/basic_string.h:6391, from /usr/include/c++/8.2.0/string:52, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h:52, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qbytearray.h:1, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/tools/qstring.h:49, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qstring.h:1, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/io/qiodevice.h:50, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qiodevice.h:1, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/io/qfiledevice.h:43, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qfiledevice.h:1, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfile.h:44, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_p.h:54, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:43: /usr/include/stdio.h:164:12: note: previous declaration of 'int renameat2(int, const char, int, const char, unsigned int)' extern int renameat2 (int oldfd, const char *old, int newfd, ^~~~~~~~~ In file included from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:106: /usr/include/linux/stat.h:56:8: error: redefinition of 'struct statx_timestamp' struct statx_timestamp { ^~~~~~~~~~~~~~~ In file included from /usr/include/sys/stat.h:446, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/mkspecs/linux-g++/qplatformdefs.h:75, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:42: /usr/include/bits/statx.h:25:8: note: previous definition of 'struct statx_timestamp' struct statx_timestamp ^~~~~~~~~~~~~~~ In file included from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:106: /usr/include/linux/stat.h:99:8: error: redefinition of 'struct statx' struct statx { ^~~~~ In file included from /usr/include/sys/stat.h:446, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/mkspecs/linux-g++/qplatformdefs.h:75, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:42: /usr/include/bits/statx.h:36:8: note: previous definition of 'struct statx' struct statx ^~~~~ /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:107:12: error: 'int statx(int, const char, int, unsigned int, statx)' was declared 'extern' and later 'static' [-fpermissive] static int statx(int dirfd, const char pathname, int flag, unsigned mask, struct statx statxbuf) ^~~~~ In file included from /usr/include/sys/stat.h:446, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/mkspecs/linux-g++/qplatformdefs.h:75, from /tmp/makepkg/android-qt5-armeabi-v7a/src/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:42: /usr/include/bits/statx.h:87:5: note: previous declaration of 'int statx(int, const char, int, unsigned int, statx)' int statx (int dirfd, const char restrict path, int __flags, ^~~~~ make: ** [qfilesystemengine_unix.o] Error 1 .==> ERROR: A failure occurred in build(). Aborting...

hipersayan_x commented on 2018-07-18 02:50 (UTC)

@Martchus, that's a lot of progress. Sadly I will be probably not able to test this until the end of this year, only tried building with it and worked, but I'm not aware about possible run time bugs. Maybe someone is already working with these packages?

Martchus commented on 2018-07-17 14:28 (UTC) (edited on 2018-07-17 14:28 (UTC) by Martchus)

I now was able to build OpenSSL, libiconv, Kirigami and some other CMake-based projects for Android. I also managed to configure Qt 5 to load OpenSSL dynamically.

However, so far my app crashes on startup so I need to further investigate before adding any changes here. The packages I've created so far are available at: https://github.com/Martchus/PKGBUILDs/tree/more_android_packages


Just some thoughts about using Qt for Android and the ECM toolchain file:

  • Is anybody using this as well? For me this wasn't very straight forward to use. A lot of variables need to be set and some of them are even redundant to CMake's regular variables (eg. path to the SDK). Maybe we could create a android-cmake package similar to mingw-w64-cmake to simplify this?

  • It is also very annoying that androiddeployqt tries to load some Java stuff during the build. Maybe this could be packaged as well somehow. I also had to use Java 8 because Java 9 and 10 are apparently to new.

  • Btw, here is the ECM toolchain-based build script I've come up with so far: https://github.com/Martchus/PKGBUILDs/blob/more_android_packages/passwordmanager/android-arm64-v8a/PKGBUILD
    (the Password Manager is usually my demo app for stuff like this.)

hipersayan_x commented on 2018-07-05 00:38 (UTC)

@Martchus, Great also thanks!

Martchus commented on 2018-07-04 22:21 (UTC)

@hipersayan_x I have created OpenSSL packages, at least for two of the archs: https://aur.archlinux.org/packages/?K=android-openssl

When I have finished my tests, I can send a PR (let's see when I find time to build Qt and some demo app using OpenSSL).