Qt for Android 编译输出乱码
红字部分一堆乱码,不知道是啥。也并不是所有的中文都是乱码,就是在编译java代码时才出现的
然后使用 Android Studio 打开 Qt 自动生成的 android-build 目录,输入命令.\gradlew compileDebugSource --stacktrace -info
,发现仍然是乱码
改用命令.\gradlew compileDebugSource --scan
扫描,并将结果发布到scans.gradle.com
之后邮箱就会收到一个激活链接
点开链接,查看报告,原先控制台输出的乱码在网页上竟然可以正常显示。只可惜这里显示的诊断信息是错误的,显然不是类 MyContentProvider 是公共的, 应在名为 MyContentProvider.java 的文件中声明
。真正的原因是MyContentProvider不是抽象的, 并且未覆盖ContentProvider中的抽象方法
。将 Android Gradle 插件更新到 7.4 可以解决这个误诊问题,但是仍然不能解决乱码问题。
如果在控制台输入命令javac -Xlint:deprecation src\java\ContentProvider.java
可以看到更多信息,不过貌似有很多误报,估计是因为依赖库的问题,不能对其单独编译。可以通过修改 build.gradle 文件,添加以下选项查看哪些代码被弃用了
tasks.withType(JavaCompile) {
// options.compilerArgs += ['-Xlint:deprecation']
options.deprecation = true // 上面太烦,使用这个更简单
// options.verbose = true // 这个更啰嗦
}
之后再调用命令扫描.\gradlew compileDebugSource --scan
,再次提交报告(因为中文乱码),然后再打开网页查看说明。个人觉得以上几个选项都不重要,可以不用配置。
至此,仍然不知道怎么解决控制台的中文乱码。应该不是 Qt Creator 的问题,也不是 Android Studio 的问题,貌似就是 gradle 的问题
本作品采用《CC 协议》,转载必须注明作者和本文链接
感觉在Qt里面加入java代码很麻烦。一旦出错的话,gradle 会输出一堆中文乱码。即使切换到 Android Studio 照样显示乱码,改用 PowerShell 甚至是最原始的 cmd 照旧是乱码。

很明显了,这个乱码就是 gradle 搞出来的,估计再升级一下就好了