代码之家  ›  专栏  ›  技术社区  ›  Franky

构建QML应用程序的APK文件时出现链接错误

  •  0
  • Franky  · 技术社区  · 6 年前

    我在Windows 7 x64计算机上使用qt 5.12,下面是 设备 在Qt Creator 4.8上:

    enter image description here

    如图所示,sdk、ndk和jdk似乎很好。

    通过这条路径,我创建了一个名为“test_1”的简单QML项目:

    文件=>新建文件或项目=>应用程序(模板)=>qt快速 application-empty=>项目名称(test_1)=>(生成系统) qmake=>最低要求qt版本5.12=>套件(Android x86、ARM7 和桌面)完成

    代码如下:

    import QtQuick 2.12
    import QtQuick.Window 2.12
    
    Window {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello QML World")
    }
    

    SDK包也如下:

    enter image description here

    这里有什么毛病吗?

    现在使用 工具包 :
    桌面 : 好啊
    Android x86 ARM7 : 故障录波

    以下是 编译输出 红色窗户:

    失败:生成失败,出现异常。

    • 出了什么问题: 任务“”的执行失败:ProcessDebugResources“”。 Android资源链接失败输出:c:\users\abbasi\desktop\q_apps\qml_apps\test_1\build-test_1-android_armeabi_v7a_clang_qt_5_12_0_for_android_armv7-debug\android build\build\intermediates\merged_manifests\debug\processdebugmanifest\merged\androidmanifest.xml:39:error:'方向uimode屏幕布局屏幕大小小屏幕大小布局方向locale fontscale keyboard hidden navigation mcc mnc density'与属性配置更改(attr)标志不兼容[locale=4,fontscale=1073741824,keyboard=16,keyboardhidden=32,layoutdirection=8192,mcc=1,mnc=2,navigation=64,direction=128,screenlayout=256,screensize=1024,smallestscreensize=2048,touchscreen=8,uimode=512]。 错误:处理清单失败。

    命令:c:\users\abbasi.gradle\caches\trans-1\files-1.1\aapt2-3.2.0-4818971-windows.jar\83adb1c826b3da76392222b7ff050e9c\aapt2-3.2.0-4818971-windows\aapt2.exe link-i \c:\users\abbasi\appdata\local\android\android\android-21\android.jar\--manifest\c:\用户\abbasi\桌面\桌面\q\uapp \qml-app \测试\1 \build-测试\1-bububuil1-bububububububuil1-Android_for_Armeabi_V7a_Claandroid_armv7-debug\android buil \ \buil \ \ \intermedias \ \mer合并的\manifests \debug \ \procedebugmanifest \mer合并\androidmanifest.xml \-o \c:\user \abbasi \ \桌面\q_app \qml_app \ \ \test_1 \ \bubuil-测试\u armeabi 1-androroid_armeabi v7a_v7a_v7a_clang_qt_qt_5_12_0_0 _Android_armv7-debug \ \ \ \ \ \ \ \ \and\processdebugsources\ouAt\\Abasi\DyBase\QualsApp\TestMy1\BuiDeBo.ToMyAbIIA.V7AyLaMiBaIIIV7A127,ORVID7,ARMV7调试,\ Android构建\\Budio\Buffel\DealDebug资源\RealGuest.App.txt的资源列表-AutoAdd Offay-\ Java\C\\\Abasi\Deals\qyApps\qMLYAPPS\Test1\Bug测试_ 1-android_for_armeabi_v7a_clang_qt_5_12_0_for_android_armv7-debug \android build \build \generated \not_namespaced_class_sources \debug \processdebugsources \r \-custom package \org.qtproject.example.test_1 \0 \apk \-无版本向量 守护进程:aapt2 aapt2-3.2.0-4818971-windows守护进程0 输出:c:\users\abbasi\desktop\q_apps\qml_apps\test_1 \build-test_1-android_armeabi_v7a_clang_qt_5_12_0_Android_armv7-debug \androbubu \ \bubu \ \ \中间\ \合并的_manifests\debug\procedebugmanifest\合并的\androidmanifest.xml:39:aapt:error:error:'ori定向uimode uimode屏幕布局;屏幕大小小屏幕大小;layout方向屏幕大小124;地区字体比例|键盘keyboardhidden navigation mcc mnc density'与属性配置更改(attr)标志不兼容[locale=4,fontscale=1073741824,keyboardhidden=16,keyboardhidden=32,layoutdirection=8192,mcc=1,mnc=2,navigation=64,orientation=128,screenlayout=256,screensize=1024,smallestscreensize=2048,touchscreen=8,uimode=512]。

    错误:处理清单失败。 命令:c:\users\abbasi.gradle\caches\trans-1\files-1.1\aapt2-3.2.0-4818971-windows.jar\83adb1c826b3da76392222b7ff050e9c\aapt2-3.2.0-4818971-windows\aapt2.exe link-i \c:\users\abbasi\appdata\local\android\android\android-21\android.jar\--manifest\c:\用户\abbasi\桌面\桌面\q\uapp \qml-app \测试\1 \build-测试\1-bububuil1-bububububububuil1-Android_for_Armeabi_V7a_Claandroid_armv7-debug\android buil \ \buil \ \ \intermedias \ \mer合并的\manifests \debug \ \procedebugmanifest \mer合并\androidmanifest.xml \-o \c:\user \abbasi \ \桌面\q_app \qml_app \ \ \test_1 \ \bubuil-测试\u armeabi 1-androroid_armeabi v7a_v7a_v7a_clang_qt_qt_5_12_0_0 _Android_armv7-debug \ \ \ \ \ \ \ \ \and\processdebugsources\ouAt\\Abasi\DyBase\QualsApp\TestMy1\BuiDeBo.ToMyAbIIA.V7AyLaMiBaIIIV7A127,ORVID7,ARMV7调试,\ Android构建\\Budio\Buffel\DealDebug资源\RealGuest.App.txt的资源列表-AutoAdd Offay-\ Java\C\\\Abasi\Deals\qyApps\qMLYAPPS\Test1\Bug测试_ 1-android_for_armeabi_v7a_clang_qt_5_12_0_for_android_armv7-debug \android build \build \generated \not_namespaced_class_sources \debug \processdebugsources \r \-custom package \org.qtproject.example.test_1 \0 \apk \-无版本向量 守护进程:aapt2 aapt2-3.2.0-4818971-windows守护进程0

    • 尝试:使用--stack trace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。用——扫描来获得完整的信息。

    • 获取更多帮助 https://help.gradle.org

    在7s14个可操作任务中构建失败:1个已执行,13个最新的Android包构建失败!--有关详细信息,请使用--verbose运行此命令。13:40:16:进程“c:\qt\5.12.0\android_armv7\bin\androiddeployqt.exe”退出,代码14。在执行步骤“构建Android APK”时,在构建/部署项目测试_1时出错(套件:Android for Armeabi-V7a(Clang Qt 5.12.0 for Android Armv7))。

    我甚至去了 android-ndk-r17c-windows-x86_64.zip 把它换成 NDK R18B ,但结果没有变化!

    请问有什么问题?这与我创建项目的路径无关吗? 我认为您也可以使用ARM7工具包创建Android应用程序,构建应用程序是其创建的一部分。所以一定有办法解决这个问题。同意吗? 你能帮忙吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   dtech    6 年前

    似乎即使qt文档中提到api 21,它也不能真正工作,如果我以api 21为目标,我也会得到同样的显式错误。

    此外,谷歌市场目前不接受针对低于API 26的应用程序。这是一个快速移动的目标。

    但这并不意味着你必须限制自己使用运行Android8或更高版本的设备。您可以在清单文件中指定API下限。

    为您的项目激活Android工具包,然后转到项目设置,在 Build Steps 展开 Build Android APK 窗格,设置 Android build SDK andrid-28 . 再往下,有一个按钮 Create Templates -单击该按钮可生成可编辑的清单文件。单击后,它将添加一个 AndroidManiest.xml 文件到项目。双击它在清单编辑器中打开,然后设置 Minimum required SDK 到19,目标SDK到28。

    这也意味着您实际上只需要API 28,似乎API本身与旧版本“反向兼容”,这意味着您不需要API 19将其用作最低要求的版本。只要你提供一个较低的最低版本,应用程序应该工作得很好,即使它的目标是最新版本。