将之前Qt开发安卓时遇到的一些报错记录下
问题1
- FAILURE: Build failed with an exception.
-
What went wrong:
A problem occurred configuring root project 'android-build'.
>Could not resolve all files for configuration ':classpath'.
>Could not download bcpkix-jdk15on-1.67.jar(org.bouncycastle:bcpkix-jdk15on:1.67)
>Could not get resource 'https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.67/bcpkix-jdk15on-1.67.jar'.
>Read timed out
解决:
打开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 模块无法被解析,可能会导致应用程序无法正常工作。这些警告信息可能与应用程序闪退的问题无关。
安卓设备上的程序闪退可能是由于各种原因导致的,例如内存不足、权限问题、设备不兼容、应用程序崩溃等。为了确定具体的问题,你可以尝试以下几件事情:
- 检查应用程序的权限是否正确设置,并确保应用程序在设备上具有所需的权限。你可以在应用程序的
AndroidManifest.xml
文件中设置应用程序的权限。 - 检查应用程序是否在设备上运行时,占用了过多的内存或 CPU 资源。你可以使用 Android Studio 的 Profiler 工具来分析应用程序的性能,并找出性能瓶颈。
- 检查应用程序是否与设备不兼容。你可以在应用程序的
build.gradle
文件中设置应用程序的最小 SDK 版本和目标 SDK 版本,以确保应用程序与设备兼容。 - 检查应用程序是否有崩溃日志或异常信息。你可以在设备上查看应用程序的日志,并尝试找出可能导致应用程序崩溃的原因。