Bug 454080 - Android : module "org.kde.kirigami" plugin "KirigamiPlugin" not found
Summary: Android : module "org.kde.kirigami" plugin "KirigamiPlugin" not found
Status: RESOLVED DOWNSTREAM
Alias: None
Product: frameworks-kirigami
Classification: Frameworks and Libraries
Component: general (other bugs)
Version First Reported In: Master
Platform: Debian unstable Android 10.x
: NOR normal
Target Milestone: Not decided
Assignee: Marco Martin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-05-20 10:21 UTC by drich
Modified: 2022-05-23 16:12 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description drich 2022-05-20 10:21:29 UTC
Hello,

Sorry to bother for such a simple problem but Google doesn't help much, it's the very first time I try to run a Kirigami app on Android so I just maybe missed something.
Program compiles and packages fine, but running on Android leads to the following error :

	Hello World: QQmlApplicationEngine failed to load component
	Hello World: qrc:/main.qml:5:1: module "org.kde.kirigami" plugin "KirigamiPlugin" not found
	Hello World: exit app 0


Steps I followed :
 * Install fresh Android SDK and NDK (versions android-32 and ndk-r21 matching Qt-everywhere requirements)
 * Compile and install Qt-everywhere-5.15.4 using Android NDK
 * Compile and install Kirigami from master git using ECM Android.cmake toolchain as described in README file
 * make a simple program (spawn a QQmlApplicationEngine then load "qrc:/main.qml" file, qml files contains a QtQuick ApplicationWindow and a Kirigami SearchField)
 * build using ECM Android.cmake toolchain as described in Kirigami README file


I tried manually adding assets:/ to the QML engine import path with no results :

	engine.addImportPath("assets:/");
	engine.addImportPath("assets:/qml");
	engine.addPluginPath(QCoreApplication::applicationDirPath());

Listing QDir("assets:/") gives the following :
	assets:/images
	assets:/qml
	assets:/qml/org
	assets:/qml/org/kde
	assets:/qml/org/kde/kirigami.2
	assets:/qml/org/kde/kirigami.2/private
	assets:/qml/org/kde/kirigami.2/private/globaltoolbar
	assets:/qml/org/kde/kirigami.2/settingscomponents
	assets:/qml/org/kde/kirigami.2/styles
	assets:/qml/org/kde/kirigami.2/styles/Material
	assets:/qml/org/kde/kirigami.2/styles/org.kde.desktop
	assets:/qml/org/kde/kirigami.2/swipenavigator
	assets:/qml/org/kde/kirigami.2/swipenavigator/templates
	assets:/qml/org/kde/kirigami.2/templates
	assets:/qml/org/kde/kirigami.2/templates/private
	assets:/share
	assets:/share/man
	assets:/share/man/man3
	assets:/share/man/man5
	assets:/webkit

Listing QMLEngine importPaths gives the following :
	assets:/qml
	assets:/
	qrc:/android_rcc_bundle/qml
	/data/app/org.qtproject.example.gps-SUILl8-A4n_0jj5Igj0l6g==/lib/arm
	qrc:/qt-project.org/imports

Environment :
 * Debian unstable
 * android-32 SDK
 * r21 NDK
 * Qt 5.15.4
 * Kirigami master
 * Android 10
Comment 1 drich 2022-05-20 11:55:32 UTC
Looks like the missing file is actually present in /data/<appid>/lib/arm/org/kde/kirigami.2/libKirigamiPlugin_armeabi-v7a.so
Moving it to /data/<appid>/lib/arm leads to the following error :

plugin cannot be loaded for module "org.kde.kirigami": Cannot load library /data/app/org.qtproject.example.gps-bXte189KwtslRbaZqWyqmg==/lib/arm/libKirigamiPlugin_armeabi-v7a.so: (dlopen failed: library "_data_app_org.qtproject.example.gps-bXte189KwtslRbaZqWyqmg==_lib_arm_libKirigamiPlugin_armeabi-v7a.so" not found)

Seems like Qt replaced slashes by underscores in the dlopen() call, is this an expected behaviour ?
Comment 2 Nate Graham 2022-05-23 16:12:11 UTC
This seems like an issue in the app itself or its backaging, not a bug in Kirigami itself.

I would recommend posting a message to the #Kirigami Matrix/IRC room to get help.