安卓调试问题记录

将之前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. 检查应用程序是否有崩溃日志或异常信息。你可以在设备上查看应用程序的日志,并尝试找出可能导致应用程序崩溃的原因。
相关推荐
其实防守也摸鱼1 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·运维·网络·人工智能·学习·安全·macos
YM52e6 小时前
鸿蒙Flutter Padding内边距:EdgeInsets详解
android·学习·flutter·华为·harmonyos·鸿蒙
Rex叶然10 小时前
ScreenMatch适配安卓屏幕脚本,用于老项目
android·screenmatch·安卓屏幕适配
阿pin10 小时前
Android随笔-Activity启动流程深度分析
android·activity启动流程
zzq779711 小时前
加固包闪退四象限定位:targetSdk 与保护策略实战解析
android·安全·安卓·安全架构
我命由我1234512 小时前
Android 开发问题:Cannot resolve method ‘repeat‘ in ‘String‘
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
光头闪亮亮13 小时前
Fyne ( go跨平台GUI )项目实战-scanner摄像头扫码组件开发技术详解
android·go
Android打工仔13 小时前
Continuation 到底是谁创建的?
android·kotlin
DeepAgent14 小时前
AI Agent 工程实践(17):Agent 为什么需要可观测性(Observability)?
android·llm·agent
提笔了无痕14 小时前
MySQL SQL 从 EXPLAIN 到索引优化,搞懂 SQL 为什么慢
android·sql·mysql