J'essaie d'importer le plugin d'extension rapide TimeExample QT à partir de Qt 5.1.0 Installation Android.
Puis j'ai créé une application QT simple Simple QT (éléments intégrés) de Qt Creator. Que dois-je ajouter au fichier de projet d'application pour obtenir le plugin QML dans la sortie ".apk" package? P> Il est actuellement dit: P> w / qt (23528): actifs: /qml/timeexampleest/main.qml: 2 (): actifs: /qml/timeexampleest/main.qml: 2: 1: module "TimeeExample" n'est pas installé p >
BlockQuote> Main.QML P> libqmlqtimeexampleplugin.so code> est construit successivement dans
Build-plugins-android_for_arm_gcc_4_6_qt_5_1_0-Butée / Importations Code> p>
folder_01.source = qml/TimeExampleTest
folder_01.target = qml
folder_02.source = /home/artem/Projects/Veedo/Test/build-plugins-Android_for_arm_GCC_4_6_Qt_5_1_0-Debug/imports/TimeExample
folder_02.target = imports
DEPLOYMENTFOLDERS = folder_01 folder_02
QML_IMPORT_PATH = /home/artem/Projects/Veedo/Test/build-plugins-Android_for_arm_GCC_4_6_Qt_5_1_0-Debug/imports/TimeExample
SOURCES += main.cpp
include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
qtcAddDeployment()
OTHER_FILES += \
android/src/org/kde/necessitas/ministro/IMinistro.aidl \
android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \
android/src/org/qtproject/qt5/android/bindings/QtActivity.java \
android/src/org/qtproject/qt5/android/bindings/QtApplication.java \
android/AndroidManifest.xml \
android/version.xml \
android/res/values-ja/strings.xml \
android/res/values-rs/strings.xml \
android/res/values-zh-rTW/strings.xml \
android/res/values-fa/strings.xml \
android/res/values-ru/strings.xml \
android/res/values-fr/strings.xml \
android/res/values-ro/strings.xml \
android/res/values-el/strings.xml \
android/res/values-ms/strings.xml \
android/res/values-nb/strings.xml \
android/res/values-et/strings.xml \
android/res/values-pl/strings.xml \
android/res/values-pt-rBR/strings.xml \
android/res/values-es/strings.xml \
android/res/values-id/strings.xml \
android/res/values-de/strings.xml \
android/res/values-it/strings.xml \
android/res/values-zh-rCN/strings.xml \
android/res/values/strings.xml \
android/res/values/libs.xml \
android/res/layout/splash.xml \
android/res/values-nl/strings.xml
3 Réponses :
Avec Qt 5.3, nous avons réussi à obtenir notre plug-in QML reconnu par une application Android QT uniquement en déployant le plugin au répertoire QT_INSTALL_QML où réside les modules QT QML officiels. Ce répertoire est /opt/qt/5.3/Android_armv7/qml dans notre cas.
côté plugin fort> p> Notre fichier Notre fichier .pro code> du plugin ressemble à: p>
qmldir code> (dans la racine de l'arborescence du plugin) est le suivant: p>
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtMultimedia 5.0
import com.mycompany.qmlcomponents 1.0
...
Intéressant, mais IIRC il y a une manière beaucoup plus simple, je pourrais creuser / essayer du code si vous êtes intéressé.
Je suis intéressé @ mlvljr!
@ user981733 OK, laissez-moi regarder dans ceci dans les jours suivants alors :)
Après avoir lu la source de QT sur QabstractfileEngineHandler, j'ai trouvé quelque chose de laid à Qt:
QT a mis en œuvre une sorte de mécanisme pour fournir "ChercheurPath" (pas l'URL) comme "QRC:", "Actifs:", où le noyau est qabstractfileengineHandler. P> Li>
qabstractfileengineHandler ne devient plus public dans qt5, il ne fournit que abstrait à qfile, qfileinfo, qdir, qicon et les choses fournies par QFile, y compris Qimage, plus QandroidasseSfileEngineHandler, spécialisée pour les actifs Android. P> li>
SO SEARCHPATH SCHEMA n'est pas compatible avec QurL, même ils ont l'air si similaire, car vous savez que Qtquick est SetSource à une URL, un fichier QML ne serait donc pas chargé par "Actifs:" Prefix directement. P>
Vous pouvez trouver ceci ci-dessous [statique] vide qdir :: constSearchPaths (const qstring & préfixe, const qstringlist & wechPaths) code> dans le document de QT: p>
QDir::setSearchPaths("icons", QStringList(QDir::homePath() + "/images"));
QDir::setSearchPaths("docs", QStringList(":/embeddedDocuments"));
...
QPixmap pixmap("icons:undo.png"); // will look for undo.png in QDir::homePath() + "/images"
QFile file("docs:design.odf"); // will look in the :/embeddedDocuments resource path
Voici comment je l'ai fait.
Ajoutez ceci à votre code d'application: p> slash avant après "actifs:" est important, il ne va pas travailler sans elle.
Dans votre dossier de construction, vous devez avoir une structure de répertoire comme ceci: ceci n'a toutefois pas fonctionné pour moi avec Qt Creator de Qt 5.11 donc ce que je devais faire était d'ajouter manuellement au / home / my_name / project_build_directory / qml / my_plugin code>. Votre répertoire de plug-in doit avoir votre
.so code> bibliothèque et le fichier
qmldir code>.
Ensuite, vous devez obtenir le plugin emballé. Cela devrait être possible en ajoutant ce qui suit à votre fichier
.pro code> fichier: p>
.json code> déploiement: p>
"android-extra-libs":"/your/qt/path/lib/libQt5Xml.so,/your/qt/path/lib/libQt5Network.so",
...etc