求助,qt for android无法调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,qt for android无法调试相关的知识,希望对你有一定的参考价值。

参考技术A s为 ABI 'arm-linux-android-elf-32bit'启动调试器'QmlCppEngine'...
dStart parameters: 'com.ds.elofm' mode: 6
dABI: arm-linux-android-elf-32bit
dLanguages: c++ qml
dExecutable: D:\QtWorkSpace\build-eloFM-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_1-Debug\app_process
dDebugger: D:\Android\android-ndk-r10d\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin\arm-linux-androideabi-gdb.exe
dProject: D:\QtWorkSpace\eloFM (built: D:\QtWorkSpace\build-eloFM-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_1-Debug)
dQML server: 127.0.0.1:3768
dRemote: :5039
dSysroot:
dDebug Source Location:
dDebugger settings:

```````中间略...`````````
s正在设置 inferior...
<204-interpreter-exec console "set auto-solib-add on"
<205-interpreter-exec console "python sys.path.insert(1, 'C:/Qt/Qt5.4.1/Tools/QtCreator/share/qtcreator/debugger/')"
<206-interpreter-exec console "python sys.path.append('D:/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/data-directory/python')"
<207-interpreter-exec console "python from gdbbridge import *"
W/ActivityThread( 7621): Application com.ds.elofm can be debugged on port 8100...
W/System.err( 7621): java.lang.ClassNotFoundException: android.graphics.drawable.RippleDrawable
W/System.err( 7621): at java.lang.Class.classForName(Native Method)
W/System.err( 7621): at java.lang.Class.forName(Class.java:251)
W/System.err( 7621): at java.lang.Class.forName(Class.java:216)
```````中间略...`````````
W/System.err( 7621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
W/System.err( 7621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method)
W/System.err( 7621): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/RippleDrawable
W/System.err( 7621): ... 25 more
W/System.err( 7621): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.RippleDrawable" on path: DexPathList[[zip file "/data/app/com.ds.elofm-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.ds.elofm-2, /vendor/lib, /system/lib]]
W/System.err( 7621): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
W/System.err( 7621): ... 25 more
W/System.err( 7621): java.lang.ClassNotFoundException: android.graphics.drawable.AnimatedStateListDrawable
W/System.err( 7621): at java.lang.Class.classForName(Native Method)
W/System.err( 7621): at java.lang.Class.forName(Class.java:251)
W/System.err( 7621): at java.lang.Class.forName(Class.java:216)
```````中间略...`````````
W/System.err( 7621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method)
W/System.err( 7621): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/AnimatedStateListDrawable
W/System.err( 7621): ... 25 more
W/System.err( 7621): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.AnimatedStateListDrawable" on path: DexPathList[[zip file "/data/app/com.ds.elofm-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.ds.elofm-2, /vendor/lib, /system/lib]]
W/System.err( 7621): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
W/System.err( 7621): ... 25 more
W/System.err( 7621): java.lang.ClassNotFoundException: android.graphics.drawable.VectorDrawable
W/System.err( 7621): at java.lang.Class.classForName(Native Method)
W/System.err( 7621): at java.lang.Class.forName(Class.java:251)
W/System.err( 7621): at java.lang.Class.forName(Class.java:216)
```````中间略...`````````
W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method)
W/System.err( 7621): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/VectorDrawable
W/System.err( 7621): ... 25 more
W/System.err( 7621): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.VectorDrawable" on path: DexPathList[[zip file "/data/app/com.ds.elofm-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.ds.elofm-2, /vendor/lib, /system/lib]]
W/System.err( 7621): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
W/System.err( 7621): ... 25 more
W/ResourceType( 7621): Skipping entry 0x1080524 in package table 0 because it is not complex!

>=thread-group-added,id="i1"
>~"GNU gdb (GDB) 7.6\n"
>~"This GDB was configured as \"--host=i586-pc-mingw32msvc --target=arm-linux-android\".\nFor bug reporting instructions, please see:\n"
>~"<http://source.android.com/source/report-bugs.html>.\n"

>&"show version\n"
>~"GNU gdb (GDB) 7.6\n"
>~"Copyright (C) 2013 Free Software Foundation, Inc.\n"
>~"This GDB was configured as \"--host=i586-pc-mingw32msvc --target=arm-linux-android\".\nFor bug reporting instructions, please see:\n"
>~"<http://source.android.com/source/report-bugs.html>.\n"
>195^done
dPARSING VERSION: 195^done

>&"show debug-file-directory\n"
>~"The directory where separate debug symbols are searched for is \"c:\\tmp\\ndk-andrewhsieh\\build\\toolchain\\prefix\\lib\\debug\".\n"
>196^done

```````中间略...`````````

>211^done
<212target extended-remote tcp::5039

>&"target extended-remote tcp::5039\n"
>~"Remote debugging using tcp::5039\n"

>~"Ignoring packet error, continuing...\n"
>&"warning: unrecognized item \"timeout\" in \"qSupported\" response\n"
unrecognized item "timeout" in "qSupported" response

>~"Ignoring packet error, continuing...\n"

W/System.err( 7621): java.lang.Exception:
W/System.err( 7621): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:261)
W/System.err( 7621): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:660)
W/System.err( 7621): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:900)
W/System.err( 7621): at android.app.Activity.performCreate(Activity.java:5303)
W/System.err( 7621): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1091)
W/System.err( 7621): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2165)
W/System.err( 7621): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2255)
W/System.err( 7621): at android.app.ActivityThread.access$800(ActivityThread.java:142)
W/System.err( 7621): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213)
W/System.err( 7621): at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 7621): at android.os.Looper.loop(Looper.java:136)
W/System.err( 7621): at android.app.ActivityThread.main(ActivityThread.java:5217)
W/System.err( 7621): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 7621): at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err( 7621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
W/System.err( 7621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method)

>~"Ignoring packet error, continuing...\n"

>~"Ignoring packet error, continuing...\n"

>&"Remote connection closed\n"
dNOTE: INFERIOR EXITED
dState changed from InferiorSetupRequested(4) to InferiorExitOk(16)
dQUIT DEBUGGER REQUESTED IN STATE 6
dNOTE: INFERIOR ILL
dState changed from InferiorSetupOk(6) to InferiorShutdownRequested(17)
dQUEUE: SHUTDOWN INFERIOR
dState changed from InferiorExitOk(16) to InferiorShutdownOk(19)
dNOTE: INFERIOR EXITED
dState changed from InferiorSetupRequested(4) to InferiorExitOk(16) [master]
dState changed from InferiorExitOk(16) to InferiorShutdownOk(19) [master]
dState changed from InferiorShutdownOk(19) to EngineShutdownRequested(20) [master]
dQUEUE: SHUTDOWN ENGINE
>212^error,msg="Remote connection closed"
sFailed to start application: 连接远程服务器失败:
sRemote connection closed
dINFERIOR START FAILED
dNOTE: INFERIOR SETUP FAILED
s设置失败。
dState changed from InferiorShutdownOk(19) to InferiorSetupFailed(5)
dQUIT DEBUGGER REQUESTED IN STATE 17
dNOTE: INFERIOR ILL
dState changed from InferiorShutdownRequested(17) to InferiorShutdownRequested(17)
dQUEUE: SHUTDOWN INFERIOR
dNOTE: INFERIOR SETUP FAILED
s设置失败。
dState changed from EngineShutdownRequested(20) to InferiorSetupFailed(5) [master]
dState changed from InferiorSetupFailed(5) to EngineShutdownRequested(20) [master]
dQUEUE: SHUTDOWN ENGINE

dCALL: SHUTDOWN INFERIOR
dINFERIOR SUCCESSFULLY SHUT DOWN
dState changed from InferiorShutdownRequested(17) to InferiorShutdownOk(19)
dCALL: SHUTDOWN ENGINE
dState changed from InferiorSetupFailed(5) to EngineShutdownRequested(20)
dINITIATE GDBENGINE SHUTDOWN IN STATE 0, PROC: 2
<213-gdb-exit
dCALL: SHUTDOWN INFERIOR
dINFERIOR SUCCESSFULLY SHUT DOWN
dState changed from InferiorShutdownOk(19) to InferiorShutdownOk(19)
dCALL: SHUTDOWN ENGINE
dState changed from EngineShutdownRequested(20) to EngineShutdownRequested(20)
dINITIATE GDBENGINE SHUTDOWN IN STATE 0, PROC: 2
<214-gdb-exit
>213^exit
dGDB CLAIMS EXIT; WAITING
dUNEXPECTED GDB STDERR: Could not AssignProcessToObject
dGDB PROCESS FINISHED, status 0, code 0
dNOTE: ENGINE SHUTDOWN OK
dState changed from EngineShutdownRequested(20) to EngineShutdownOk(22)
dNOTE: ENGINE SHUTDOWN OK
dState changed from EngineShutdownRequested(20) to EngineShutdownOk(22) [master]
dState changed from EngineShutdownOk(22) to DebuggerFinished(23) [master]
dQUEUE: FINISH DEBUGGER
dState changed from EngineShutdownOk(22) to DebuggerFinished(23)
dNOTE: FINISH DEBUGGER
dHANDLE RUNCONTROL FINISHED
s调试器已结束。本回答被提问者和网友采纳

Qt for Android 开发大坑

Qt for Android 开发大坑

作者: qyvlik

Qt 5.5.1

这里说一说比较常见的 Qt 开发安卓的大坑。希望同学们不要做无谓的挣扎,跳过这些坑。

输入框

PS: QTBUG-41170, 在 2017 年 4 月,有一个比较好解决方案出现了,代码: AndroidKeyboardSize,博客:QML: Resize controls when Android virtual keyboard come up

PS: 2019-11 另外一个解决方案:android adjustNothing get keyboard height,这篇博客中,提供了一个 gif,点击这里查看效果

首当其冲的是输入框,Qt 的输入在安卓上表现不佳.

  1. 无法支持安卓原生的输入法访问 Qt 的输入框,就是安卓输入法无法复制,粘贴,剪切 Qt 输入框中的文本。

  2. 无法支持使用触摸的方式选中 Qt 输入框中的文字。

  3. 如果输入框的位置处于应用底部,类似于 IM 那种聊天工具,应当注意。

    a. 如果应用 Activity 设置为 android:windowSoftInputMode="adjustResize",弹出输入法时,应用界面就会进行缩放,这个时候,应用界面就会闪烁。

    b. 如果应用 Activity 设置为 android:windowSoftInputMode="adjustPan",应用界面的头部就会被顶出屏幕。

  4. 为了修复上诉的问题,参照如下步骤

    a. 先设置应用 Activity 设置为 android:windowSoftInputMode="adjustPan",这样,弹出输入法时,就不因为界面缩放而闪烁。

    b. 获取到安卓输入法高度。

    c. 修改输入框,使其被点击获取焦点之前,先弹出输入法(Qt.inputMethod.show()),由于不是输入框获取焦点而弹出输入发,所以界面既不会闪烁,也不会相对屏幕向上位移。(就是在 TextField 上放一个 MouseArea

    d. 在输入法弹出后,就可以获取键盘高度(如果在安卓上获取键盘高度,是需要写一些 Java 代码的)。

    e. 获取到键盘高度后,直接位移输入框(延时处理),然后 forceActiveFocus 强制获取焦点。

  5. 上诉解决方案又引发一个问题,且听我细细道来。

    a. 首先 Qt.inputMethod.show() 在安卓上可以直接显示键盘,然后显示时不会直接缩放界面(造成闪烁)或者将界面顶出屏幕。

    b. 接着,输入框是一个特殊的控件,在输入框获取虚拟键的焦点后,安卓上的输入法会直接记住这个控件的位置。

    c. 再下一次直接调用 Qt.inputMethod.show() 时,会找到上一次获取焦点的输入框的位置,根据这个位置,弹出虚拟键破并将界面顶出屏幕,然后输入框才会拿到键盘高度,位移。

  6. 为了再解决上诉的问题,还得记录下安卓上键盘的高度,然后根据键盘高度决定先使用 Qt.inputMethod.show() 弹出键盘,还是先位移输入框。

已经具现化的解决方案GDPURJYFS/WellChat,演示视频安卓修复键盘弹出界面不友善问题修复终版Demo。当然现在这些方案都有各种各样的问题,具体要做的,其实是希望官方修复键盘弹出,界面缩放时闪烁的这个问题。

其他方案:QML: Resize controls when Android virtual keyboard come up

Qt Android 键盘问题

摄像头

Qt 安卓应用上的摄像头,如果直接使用 QtMultimedia::Camera 可能会出现无法很好对焦的情况,并且各个机型和不同版本系统上表现不一致,华为手机对 Qt 的支持不佳,问题会稍微多一些。

解决方法:

可以直接通过调用系统的摄像软件,具体参照QtAndroid详解(3):startActivity实战Android拍照功能,具体代码 A-week-to-develop-android-app-plan/demos/CallNativeCamera

SplashScreen

启动屏,据多数 Qter 反映,Qt 安卓应用启动时,会显示一个无内容,带有标题和应用 Icon 的黑色画面,无法直接预先显示 SplashScreen。

本地多媒体缩略图

网络资源可以通过现有的 C++ 接口进行优化,缓存。但是本地多媒体缩略图支持,需要自行构建一个好用的。

网页支持

Qt 对移动平台的网页支持,应该是试图通过在 QtSurface 上绘制原生网页进行支持,所以 Qt 的网页支持对于移动平台来说是很孱弱的。然后 QtWebEngine 是基于谷歌的 Chromium 的,Chromium 现在对 VS 编译支持最好,Chromium 对 MinGW 的支持基本是没有的。

现在 Qt 在手机设备上,使用 QtWebView 也就是在 QtSurface 上绘制原生网页作为 Qt 在移动端上网页的解决方案。

本地化地图

QtQuick 中是支持地图插件的,但是官方只是预制了 here 等几个国外的地图插件,百度地图只能自己去封装插件。

相关讨论有关 QML QtLocation 的 Plugin 的使用问题


FalsinSoft/Qt

以上是关于求助,qt for android无法调试的主要内容,如果未能解决你的问题,请参考以下文章

求助,我在linux下安装的Qt5为啥用GDB调试器无法进入源码

Qt for Android 开发大坑

Qt for Android 开发大坑

无法使用 Qt for Android 使手机播放声音或振动

我的OpenGL学习进阶之旅解决Android OpenGL ES 调试工具 GAPID 无法识别Android设备的问题

我的OpenGL学习进阶之旅解决Android OpenGL ES 调试工具 GAPID 无法识别Android设备的问题