安卓调试问题记录

将之前Qt开发安卓时遇到的一些报错记录下

问题1
  • FAILURE: Build failed with an exception.

解决:

打开build目录->android-build->build.gradle文件。

在文件中repositories {}中,添加两个repositories,jcenter()和mavenLocal()。

复制代码
repositories {
	google()
	mavenCentral()
	jcenter()
	mavenLocal()
}
问题2
  • E AndroidRuntime: FATAL EXCEPTION: qtMainLoopThread:应用程序崩溃,原因是在 qtMainLoopThread 线程中发生了严重的异常错误。
  • E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libm.so.6" not found: needed by /data/app/~~g63H_aUJ749BlXcJiyQHQg==/org.qtproject.example.policeCar_APP-Of8S3Fde8GT2O4XxN4pgnw==/lib/arm64/libavcodec.so in namespace classloader-namespace

解决:

这是应用程序崩溃的具体异常信息,提示 libm.so.6 库文件未找到,而该文件是 libavcodec.so 库文件依赖的必要文件。

因此,你可以尝试以下方法来解决该闪退问题:

检查应用程序权限:根据日志中的提示,应用程序缺少 HIGH_SAMPLING_RATE_SENSORS 权限,需要在 AndroidManifest.xml 文件中添加该权限声明。

检查 Qt 版本:如果你使用的 Qt 版本较老,可以尝试升级到最新版本,以获得更好的兼容性和稳定性。

调试应用程序:使用调试工具对应用程序进行调试,找到崩溃或异常的原因。

需要注意的是,闪退问题可能有多种原因,需要根据具体情况进行调试和排查。如果你无法解决问题,可以尝试查看日志文件或咨询相关技术支持人员,以获得更详细的帮助和支持。

最终解决方案:

在ffmpeg交叉编译的时候加一个编译选项:--disable-doc --extra-ldflags="-L/usr/aarch64-linux-gnu/lib -lm"

其中," " 中间的部分是安装的交叉编译工具链的目录,目录中有libm.so.6库。

问题3
  • error: 注: D:\Qt\6.5.1\android_arm64_v8a\src\android\java\src\org\qtproject\qt\android\bindings\QtActivity.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
问题4
  • Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Windows
  • Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.macOS
  • Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.iOS
  • Warning: QML import could not be resolved in any of the import paths: com.xdqd.classes
  • Warning: QML import could not be resolved in any of the import paths: HttpRequest

解决方案:

根据编译输出,应用程序已经成功安装到设备上。然而,警告信息中提到的 QML 模块无法被解析,可能会导致应用程序无法正常工作。这些警告信息可能与应用程序闪退的问题无关。

安卓设备上的程序闪退可能是由于各种原因导致的,例如内存不足、权限问题、设备不兼容、应用程序崩溃等。为了确定具体的问题,你可以尝试以下几件事情:

  1. 检查应用程序的权限是否正确设置,并确保应用程序在设备上具有所需的权限。你可以在应用程序的 AndroidManifest.xml 文件中设置应用程序的权限。
  2. 检查应用程序是否在设备上运行时,占用了过多的内存或 CPU 资源。你可以使用 Android Studio 的 Profiler 工具来分析应用程序的性能,并找出性能瓶颈。
  3. 检查应用程序是否与设备不兼容。你可以在应用程序的 build.gradle 文件中设置应用程序的最小 SDK 版本和目标 SDK 版本,以确保应用程序与设备兼容。
  4. 检查应用程序是否有崩溃日志或异常信息。你可以在设备上查看应用程序的日志,并尝试找出可能导致应用程序崩溃的原因。
相关推荐
小程故事多_808 小时前
从 Tokenizer 到 Next Token,穿透数据流,完整理解 Transformer 底层逻辑
android·深度学习·transformer
把我格子衫拿来9 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
三少爷的鞋11 小时前
Android 协程实践:为什么不应将 `supervisorScope` 作为常规方案
android
承渊政道13 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(从ChatGLM本地化到LoRA、PEFT的高级微调)
android·人工智能·pytorch·chatglm·本地化部署·大模型开发与微调
2601_9628857215 小时前
如何用 Python 判断一只股票“追涨”还是“抄底”更有效?
android·开发语言·python
素师良码15 小时前
第10篇:屏ESD Check内核逻辑驱动代码完整拆解
android
高晶15 小时前
Android 短信收发模块从零到实战:权限配置、界面设计、发送接收与兼容性适配全攻略
android·程序员
随遇丿而安15 小时前
第18周:ViewModel 基础功能 + 架构优化
android
把我格子衫拿来15 小时前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
代钦塔拉17 小时前
【C++/Qt 进阶】设计模式系列(4):原型模式——用“克隆“代替“重新构造“
c++·qt·设计模式