Qt报错 Execution failed for task ‘:compileDebugAidl‘.

摘要 Abstract

本文记录笔者在使用Qt开发android的编译问题。
This blog records the author’s compilation issues while developing Android using QT.
开发平台 :Qt Creator 4.11.1 Based on Qt 5.14.1 (MSVC 2017,32 bit) Built on Feb 5202010:36:21 From revision b2ddeacfb5
Qt版本:QMake version 3.1 Using Qt version 5.15.2
Android开发环境:使用 Android Studio 下载SDK Platforms 和 SDK Tools,并为 Qt 5.14.1 专门下载 Android SDK Tools (Obsolete)Qt Android环境配置

图1. Qt AndroidSDK环境配置
Figure 1. Qt Android SDK settings

下载 Android SDK Tools (Obsolete)

图2. 下载 Android SDK Tools (Obsolete)
Figure 2. Download Android SDK Tools (Obsolete)

问题描述 Issue description

原因分析:

推测可能性:aidl编译器的目录读取长度限制

解决方案:

解决步骤

首先到 项目->构建设置里,设置sdk和目标api版本一致。
在这里插入图片描述

图3. 修改对应SDK版本号
Figure 3. 编译出错

然后编译可能会报 Failed to GetFullPathName错误。这是因为QT默认输出编译的目录名称太长,导致aidl编译时报错,改短就好。
在这里插入图片描述

图4. 编译出错
Figure 4. 编译出错

到构建设置中编辑构建目录,把build-display_steam_control-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_2_for_Android-Release改短就好。
在这里插入图片描述

图5. 修改编译设置
Figure 5. modify build settings
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于dex方法数超出限制引起的。你可以尝试以下方法解决: 1. 在app的build.gradle文件中添加下面的代码: ```groovy android { defaultConfig { ... multiDexEnabled true } ... } dependencies { implementation 'com.android.support:multidex:1.0.3' } ``` 然后在你的Application类中添加下面的代码: ```java public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } ... } ``` 2. 如果你使用了很多第三方库,可以尝试使用ProGuard来优化代码。在app的build.gradle文件中添加下面的代码: ```groovy android { ... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } ``` 然后在app的根目录下创建一个proguard-rules.pro文件,添加下面的代码: ``` -dontwarn okio.** -dontwarn javax.annotation.** -dontwarn com.squareup.okhttp.** -dontwarn retrofit2.Platform$Java8 -dontwarn retrofit2.Platform$Java8$.* -dontwarn retrofit2.Platform$Java9 -dontwarn retrofit2.Platform$Java9$.* -keep class com.google.gson.** { *; } -keep class org.apache.commons.io.** { *; } -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions -keepattributes InnerClasses ``` 注意:ProGuard可能会导致某些库出现问题,因此需要进行适当的测试和调整。 3. 如果以上方法都无法解决问题,可以尝试升级Gradle版本或者在项目中使用AndroidX。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值