You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Qt 5.15适配Android 4.4.4(android-19)编译失败问题求助

搞定Qt 5.15编译Android 19的资源报错

先给你吃颗定心丸:Qt 5.15完全支持Android 19(API 19),不用降级Qt版本。你遇到的问题纯粹是默认生成的AndroidManifest.xml里带了高版本API才有的属性和配置,下面逐个解决:

第一个错误:android:extractNativeLibs找不到

android:extractNativeLibs是Android 6.0(API 23)才新增的属性,Android 4.4.4(API 19)根本不识别它,所以直接触发报错。解决步骤:

  • 找到你Qt项目里的AndroidManifest.xml模板:如果项目根目录没有android文件夹,就从编译生成的android-build目录里复制一份Manifest文件到项目根目录的android文件夹下,作为自定义模板使用
  • 两种处理方式任选:
    1. 简单粗暴版:直接删掉包含android:extractNativeLibs="true"的那一行
    2. 兼容高版本版:保留属性但用tools:targetApi标记仅在高版本生效,记得先在Manifest根标签添加tools命名空间:
    <!-- 在根manifest标签添加命名空间 -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              package="你的包名">
              
    <!-- 修改application标签 -->
    <application android:extractNativeLibs="true" tools:targetApi="23" ...>
    

第二个错误:configChanges参数不兼容

这个错误是因为默认的configChanges里包含了fontScale这个标记,而在API 19的编译环境下,AAPT不认可这个参数。解决方法:

  • 继续编辑刚才的AndroidManifest.xml模板,找到主Activity标签里的android:configChanges属性
  • fontScale从参数列表中移除,改成API 19支持的参数集合:
    android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
    

额外小贴士

  • 你当前用的NDK r21对Android 19的支持没问题,但如果之后还遇到其他奇怪的编译问题,可以试试把NDK版本降到r17c——这是Qt 5.15官方推荐的适配低版本Android的专用NDK,兼容性会更稳定
  • 修改完Manifest模板后,一定要清理Qt的构建目录,重新运行qmake再执行编译,确保新的配置被正确生成

内容的提问来源于stack exchange,提问作者Fredro

火山引擎 最新活动