Bug 432142 - Can't run OpenPGP on Android
Summary: Can't run OpenPGP on Android
Status: REPORTED
Alias: None
Product: qca
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: 2.3.1
Platform: Android Android 9.x
: NOR normal
Target Milestone: ---
Assignee: Ivan Romanov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-01-26 09:48 UTC by Marek
Modified: 2021-01-26 10:05 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Marek 2021-01-26 09:48:43 UTC
SUMMARY
Can't run OpenPGP on Android. QCA lib is searching for a plugin libqca-gnupg.so in crypto directory but Android does not copy subfolders from armeabi-v7a directory. Here is some issue discussed
https://github.com/gradle/gradle/issues/2394
Can there be some settings  that will tell library to look for a plugin in the directory where libqca-qt5 is located?
And also main question is: Can OpenPGP work at all on Android, maybe it relies on some OS specific commands like gpg gpg2 and packages gnupg and no matter what it will not work on Android ?


STEPS TO REPRODUCE
1. Cross compile QCA with command:
cmake . -DCMAKE_SYSTEM_NAME=Android -DCMAKE_TOOLCHAIN_FILE=/opt/Android/Ndk/android-ndk-r20/build/cmake/android.toolchain.cmake -DQt5_DIR=/opt/Felgo/Felgo/android_armv7/lib/cmake/Qt5/ -DQt5Core_DIR=/opt/Felgo/Felgo/android_armv7/lib/cmake/Qt5Core/ -DQt5Test_DIR=/opt/Felgo/Felgo/android_armv7/lib/cmake/Qt5Test/ -DQt5Network_DIR=/opt/Felgo/Felgo/android_armv7/lib/cmake/Qt5Network/ -DANDROID_PLATFORM=android-29 -DCMAKE_INSTALL_PREFIX=/usr/local/android -DUSE_RELATIVE_PATHS=ON
I'm using Felgo, but pure Qt should have the same result

2. Copy libraries into android/libs/armeabi-v7a within Qt project
ls -la armeabi-v7a/
drwxr-xr-x 2 franki franki     4096 sty 25 18:18 crypto
-rw-r--r-- 1 franki franki  3812452 sty 25 19:01 libqca-gnupg.so
-rw-r--r-- 1 franki franki   674004 sty 25 19:01 libqca-logger.so
-rw-r--r-- 1 franki franki 12997264 sty 25 18:18 libqca-qt5.so
-rw-r--r-- 1 franki franki  1025504 sty 25 19:01 libqca-softstore.so
drwxr-xr-x 3 franki franki     4096 sty 25 18:55 plugins
drwxr-xr-x 3 franki franki     4096 sty 25 18:18 qca-qt5

3. Build Android APK, only files from armeabi-v7a will be included in package, no subdirectories

OBSERVED RESULT

QCA::isSupported("openpgp") = false


EXPECTED RESULT

QCA::isSupported("openpgp") = true

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: Debian Buster, KDE 5.14.5
(available in About System)
KDE Plasma Version: 5.14.5
KDE Frameworks Version: 5.54.0
Qt Version: 5.13.2

ADDITIONAL INFORMATION
Please Help ;)

Best Regards
Marek
Comment 1 Marek 2021-01-26 10:05:45 UTC
Looking at another project I have renamed libqca-gnupg.so into:
file lib/armeabi-v7a/libplugins_crypto_libqca-gnupg.so 
lib/armeabi-v7a/libplugins_crypto_libqca-gnupg.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=140485303f05c8975f71f17a186f1265341a7b73, stripped

And it is included in APK now, but still
QCA::isSupported("openpgp") = false
Is this because gnuPG is not available on Android ?

Best Regards
Marek