安卓调试问题记录

将之前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. 检查应用程序是否有崩溃日志或异常信息。你可以在设备上查看应用程序的日志,并尝试找出可能导致应用程序崩溃的原因。
相关推荐
脚踏实地,坚持不懈!15 分钟前
Android 图形系统:图形总览 + SurfaceFlinger 与 WindowManager
android
2501_9159184124 分钟前
iOS 上架注意事项有哪些?Appuploader 的四个阶段自查清单
android·ios·小程序·https·uni-app·iphone·webview
张小姐的猫1 小时前
【MySQL】表的约束
android·linux·服务器·数据库·c++·mysql·adb
Kapaseker1 小时前
为什么程序员始终无法彻底解决内存泄漏?
android·kotlin
汤姆宝库1 小时前
推理工程深拆:调度、量化与投机解码
android·开发语言·kotlin
AirDroid_cn1 小时前
隔离风险:用备用机测试不明APP,电脑远程操控安卓保主力机安全
android·安全
qq_401700412 小时前
TCP 长连接、心跳包与断线自动重连设计:工业级通信的“不死鸟”架构
网络·qt·tcp/ip
恋猫de小郭2 小时前
Flutter 官方表示:AI 时代代码越来越容易写,为什么还要一套代码库?
android·前端·flutter
二宝哥2 小时前
把安卓平板变成电脑第二屏幕(扩展屏):局域网与外网方案全解析
android·电脑·平板·扩展屏