Название: Создание компонента расширения QML под android Отправлено: alexorleon от Апрель 15, 2016, 09:33 Добрый день камрады! Помогите разобраться.
Создал новое приложение Qt Quick и пытаюсь для него собрать пример QML Plugin Example (http://doc.qt.io/qt-5/qtqml-qmlextensionplugins-example.html). Для Ubuntu разобрался, собрал, установил, привязал. Все работает. Теперь пытаюсь этот плагин собрать под android. Нажимаю "Собрать проект". Создался каталог build-qmlextensionplugins-Android_armeabi_v7a_GCC_4_9_Qt_5_6_0-Debug с файлами: android-build imports Makefile plugin.moc plugin.o Но в консоли сборки ошибка "Не найден файл .pro приложения, APK не собирается." При попытке "Запустить" сыпятся ошибки. Не удалось найти Json файл androiddeploy. Ошибка при сборке/установке проекта qmlextensionplugins (комплект: Android для armeabi-v7a (GCC 4.9, Qt 5.6.0) ) Во время выполнения этапа «Установка на устройство Android» Физическое устройство Hugerock T70V2. Обычные приложения запускаются, так что планшет рабочий. Ubuntu x64, Qt 5.6.0. Пробовал добавить QT -= gui. Не помогло. Даже не знаю куда копать. Кто-нибудь собирал статическую библиотеку под android? Название: Re: Создание компонента расширения QML под android Отправлено: navrocky от Апрель 15, 2016, 13:33 Минимальный проект с проблемой выложите, чтобы можно было попробовать.
Название: Re: Создание компонента расширения QML под android Отправлено: alexorleon от Апрель 18, 2016, 07:51 Минимальный проект с проблемой выложите, чтобы можно было попробовать. Проблема не в проекте, а в примере из поставки Qt ( QML Plugin Example ). http://doc.qt.io/qt-5/qtqml-qmlextensionplugins-example.html Он есть в примерах. До проекта даже дело не доходит, его не получается собрать под android. Думал может кто-то пробовал его подключить к проекту. Название: Re: Создание компонента расширения QML под android Отправлено: alexorleon от Апрель 18, 2016, 13:06 Создал проект Qt Quick и назвал TestAndroidPlugin.
В файле main.qml текст из примера: Код: import QtQuick 2.6 Код: engine.addImportPath(QStringLiteral("/home/user/QtProjects/TestAndroidPlugin/imports")); Запускаем TestAndroidPlugin под desktop, все работает, часики идут. А вот под android куча ошибок. Пробую собрать QML Plugin Example. Консоль показывает Не найден файл .pro приложения, APK не собирается. Ну и ладно, APK тут и не нужен. Главное .so создался. И размер у него 512 kB против 38 kB десктопа. Произвожу те же манипуляции с копированием. Пробую запустить. В консоли: Warning: QML import could not be resolved in any of the import paths: TimeExample Warning: QML import could not be resolved in any of the import paths: QtQuick.Extras.Private Warning: QML import could not be resolved in any of the import paths: QtQuick.Extras.Private.CppUtils Warning: QML import could not be resolved in any of the import paths: QtQuick.Extras.Private.CppUtils 17:01:34: Ошибка создания пакета: Команда «/opt/android-sdk-linux/platform-tools/adb -s E9AZCY06U405 pull /system/bin/app_process32 /home/user/QtProjects/build-TestAndroidPlugin-Android_armeabi_v7a_GCC_4_9_Qt_5_6_0-Debug/app_process» завершилась с ошибкой.Код завершения: 1 Вывод приложения: W/System.err(24320): java.lang.ClassNotFoundException: android.graphics.drawable.RippleDrawable W/System.err(24320): at java.lang.Class.classForName(Native Method) W/System.err(24320): at java.lang.Class.forName(Class.java:251) W/System.err(24320): at java.lang.Class.forName(Class.java:216) W/System.err(24320): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:388) W/System.err(24320): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:92) W/System.err(24320): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:511) W/System.err(24320): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24320): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:245) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:901) W/System.err(24320): at android.app.Activity.performCreate(Activity.java:5411) W/System.err(24320): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) W/System.err(24320): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) W/System.err(24320): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) W/System.err(24320): at android.app.ActivityThread.access$800(ActivityThread.java:139) W/System.err(24320): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) W/System.err(24320): at android.os.Handler.dispatchMessage(Handler.java:102) W/System.err(24320): at android.os.Looper.loop(Looper.java:149) W/System.err(24320): at android.app.ActivityThread.main(ActivityThread.java:5257) W/System.err(24320): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24320): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err(24320): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) W/System.err(24320): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) W/System.err(24320): at dalvik.system.NativeStart.main(Native Method) W/System.err(24320): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/RippleDrawable W/System.err(24320): ... 25 more W/System.err(24320): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.RippleDrawable" on path: DexPathList[[zip file "/data/app/org.qtproject.example.TestAndroidPlugin-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.qtproject.example.TestAndroidPlugin-1, /vendor/lib, /system/lib, /system/lib/arm]] W/System.err(24320): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) W/System.err(24320): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) W/System.err(24320): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) W/System.err(24320): ... 25 more W/System.err(24320): java.lang.ClassNotFoundException: android.graphics.drawable.AnimatedStateListDrawable W/System.err(24320): at java.lang.Class.classForName(Native Method) W/System.err(24320): at java.lang.Class.forName(Class.java:251) W/System.err(24320): at java.lang.Class.forName(Class.java:216) W/System.err(24320): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:388) W/System.err(24320): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:93) W/System.err(24320): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:511) W/System.err(24320): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24320): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:245) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:901) W/System.err(24320): at android.app.Activity.performCreate(Activity.java:5411) W/System.err(24320): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) W/System.err(24320): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) W/System.err(24320): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) W/System.err(24320): at android.app.ActivityThread.access$800(ActivityThread.java:139) W/System.err(24320): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) W/System.err(24320): at android.os.Handler.dispatchMessage(Handler.java:102) W/System.err(24320): at android.os.Looper.loop(Looper.java:149) W/System.err(24320): at android.app.ActivityThread.main(ActivityThread.java:5257) W/System.err(24320): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24320): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err(24320): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) W/System.err(24320): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) W/System.err(24320): at dalvik.system.NativeStart.main(Native Method) W/System.err(24320): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/AnimatedStateListDrawable W/System.err(24320): ... 25 more W/System.err(24320): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.AnimatedStateListDrawable" on path: DexPathList[[zip file "/data/app/org.qtproject.example.TestAndroidPlugin-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.qtproject.example.TestAndroidPlugin-1, /vendor/lib, /system/lib, /system/lib/arm]] W/System.err(24320): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) W/System.err(24320): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) W/System.err(24320): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) W/System.err(24320): ... 25 more W/System.err(24320): java.lang.ClassNotFoundException: android.graphics.drawable.VectorDrawable W/System.err(24320): at java.lang.Class.classForName(Native Method) W/System.err(24320): at java.lang.Class.forName(Class.java:251) W/System.err(24320): at java.lang.Class.forName(Class.java:216) W/System.err(24320): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:388) W/System.err(24320): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:94) W/System.err(24320): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:511) W/System.err(24320): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24320): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:245) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655) W/System.err(24320): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:901) W/System.err(24320): at android.app.Activity.performCreate(Activity.java:5411) W/System.err(24320): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) W/System.err(24320): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) W/System.err(24320): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) W/System.err(24320): at android.app.ActivityThread.access$800(ActivityThread.java:139) W/System.err(24320): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) W/System.err(24320): at android.os.Handler.dispatchMessage(Handler.java:102) W/System.err(24320): at android.os.Looper.loop(Looper.java:149) W/System.err(24320): at android.app.ActivityThread.main(ActivityThread.java:5257) W/System.err(24320): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24320): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err(24320): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) W/System.err(24320): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) W/System.err(24320): at dalvik.system.NativeStart.main(Native Method) W/System.err(24320): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/VectorDrawable W/System.err(24320): ... 25 more W/System.err(24320): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.VectorDrawable" on path: DexPathList[[zip file "/data/app/org.qtproject.example.TestAndroidPlugin-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.qtproject.example.TestAndroidPlugin-1, /vendor/lib, /system/lib, /system/lib/arm]] W/System.err(24320): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) W/System.err(24320): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) W/System.err(24320): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) W/System.err(24320): ... 25 more W/ResourceType(24320): Skipping entry 0x1060087 in package table 0 because it is not complex! W/libTestAndroidPlugin.so(24320): (null):0 ((null)): QQmlApplicationEngine failed to load component W/libTestAndroidPlugin.so(24320): (null):0 ((null)): qrc:/main.qml:5 module "TimeExample" is not installed W/libTestAndroidPlugin.so(24320): Экран планшета само собой черный. Есть идеи? Название: Re: Создание компонента расширения QML под android Отправлено: navrocky от Апрель 18, 2016, 20:05 Вангую, что это что-то в районе несоответствия минимального SDK..
Говорит что класс drawable.RippleDrawable не найден, соответственно в указанной версии SDK его похоже нет, надо пробовать более позднюю версию Android SDK Попробуй targetSdkVersion 21, minSdkVersion 10 Название: Re: Создание компонента расширения QML под android Отправлено: alexorleon от Апрель 19, 2016, 11:35 Попробуй targetSdkVersion 21, minSdkVersion 10 А вангуешь то походу в правильном направлении)Было <uses-sdk android:targetSdkVersion="16" android:minSdkVersion="14"/> Попробовал с android:targetSdkVersion="19". Не помогло. Загрузил Android 5.0.1 (API 21). Т.к. у меня нет 5-го, создал виртуальное (AVD.png). Проверил, запускается. Чтобы не было ошибки Error sh: 1 glxinfo not found поставил это sudo apt-get install mesa-utils Изменил <uses-sdk android:targetSdkVersion="21" android:minSdkVersion="14"/> Для проекта выставил сборочный SDK новый android-21. Запуск и установка. Консоль: Warning: QML import could not be resolved in any of the import paths: TimeExample Warning: QML import could not be resolved in any of the import paths: QtQuick.Extras.Private Warning: QML import could not be resolved in any of the import paths: QtQuick.Extras.Private.CppUtils Warning: QML import could not be resolved in any of the import paths: QtQuick.Extras.Private.CppUtils Android package built successfully in 12,432 ms. -- It can now be run from the selected device/emulator. -- File: /home/alexorleon/QtProjects/build-TestAndroidPlugin-Android_armeabi_v7a_GCC_4_9_Qt_5_6_0-Debug/android-build//bin/QtApp-debug.apk 15:01:53: Процесс «/opt/Qt/5.6/android_armv7/bin/androiddeployqt» завершился успешно. 15:01:53: Загрузка файлов, необходимых для отладки. 15:01:53: Установка пакета: Выполнение команды «/opt/android-sdk-linux/platform-tools/adb -s emulator-5554 pull /system/bin/app_process32 /home/user/QtProjects/build-TestAndroidPlugin-Android_armeabi_v7a_GCC_4_9_Qt_5_6_0-Debug/app_process». 15:01:53: Установка пакета: Выполнение команды «/opt/android-sdk-linux/platform-tools/adb -s emulator-5554 pull /system/lib/libc.so /home/user/QtProjects/build-TestAndroidPlugin-Android_armeabi_v7a_GCC_4_9_Qt_5_6_0-Debug/libc.so». 15:01:53: Прошло времени: 00:21. Вывод приложения: Ура, ошибки пропали! Запуск внешнего процесса.I/ActivityManager( 337): Start proc de.stefanfrings.ioModule for activity de.stefanfrings.ioModule/org.qtproject.qt5.android.bindings.QtActivity: pid=1396 uid=10053 gids={50053, 9997, 3003, 1028, 1015} abi=armeabi-v7a I/art ( 1396): Not late-enabling -Xcheck:jni (already on) I/Qt ( 1396): qt start D/ ( 1396): (null):0 ((null)): QML debugging is enabled. Only use this in a safe environment. I/Choreographer( 1396): Skipped 41 frames! The application may be doing too much work on its main thread. D/gralloc_goldfish( 1396): Emulator without GPU emulation detected. W/libTestAndroidPlugin.so( 1396): (null):0 ((null)): QQmlApplicationEngine failed to load component W/libTestAndroidPlugin.so( 1396): (null):0 ((null)): qrc:/main.qml:5 module "TimeExample" is not installed W/libTestAndroidPlugin.so( 1396): Экран черный. Осталось понять куда положить module "TimeExample". Указать какой-то каталог в engine.addImportPath как для десктопа или для андроида где-то в другом месте задается? Кстати еще вот такая ошибка (gdb.png). Пробовал ставить другой NDK, не помогло. Название: Re: Создание компонента расширения QML под android Отправлено: alexorleon от Апрель 20, 2016, 08:25 По поводу ошибок Didn't find class "android.graphics.drawable.RippleDrawable" натолкнулся на это https://bugreports.qt.io/browse/QTBUG-43266.
Причем так и не ясно, правильно ли сделали, что закрыли репорт. Но раз пишут не обращать внимания на эти ошибки, продолжу работать с реальным устройством 4.4.2. К сожалению так и не нашел куда какие адреса вписывать. W/libTestAndroidPlugin.so( 1396): (null):0 ((null)): QQmlApplicationEngine failed to load component W/libTestAndroidPlugin.so( 1396): (null):0 ((null)): qrc:/main.qml:5 module "TimeExample" is not installed W/libTestAndroidPlugin.so( 1396): |