部署到 Android 会导致在添加 QtQuick 控件后找不到文件

Deploying to Android results in file not found after adding QtQuick Controls

导入 QtQuick.Controls 1.2 并使用 StackedWidget 组件后,我现在在部署到 Android 时遇到错误,如下所示。缺少的文件 AnimationDrawable.qml 并没有从 Android 构建目录中丢失,所以我不明白为什么它没有与 APK 一起打包。

当我删除导入的 QtQuick.Controls 并将 StackView 替换为其他内容时,它部署得很好。

我的Qt版本是5.4.2。

我尝试使用 Qt 5.3.2 部署它,它按预期工作。

E/Qt      (12767): Can't create main activity
E/Qt      (12767): java.io.FileNotFoundException: --Added-by-androiddeployqt--/qml/QtQuick/Controls/Styles/Android/drawables/AnimationDrawable.qml
E/Qt      (12767):  at android.content.res.AssetManager.openAsset(Native Method)
E/Qt      (12767):  at android.content.res.AssetManager.open(AssetManager.java:313)
E/Qt      (12767):  at android.content.res.AssetManager.open(AssetManager.java:287)
E/Qt      (12767):  at org.qtproject.qt5.android.bindings.QtActivity.copyAsset(QtActivity.java:394)
E/Qt      (12767):  at org.qtproject.qt5.android.bindings.QtActivity.extractBundledPluginsAndImports(QtActivity.java:503)
E/Qt      (12767):  at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:582)
E/Qt      (12767):  at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:895)
E/Qt      (12767):  at android.app.Activity.performCreate(Activity.java:5990)
E/Qt      (12767):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
E/Qt      (12767):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
E/Qt      (12767):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
E/Qt      (12767):  at android.app.ActivityThread.access0(ActivityThread.java:151)
E/Qt      (12767):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
E/Qt      (12767):  at android.os.Handler.dispatchMessage(Handler.java:102)
E/Qt      (12767):  at android.os.Looper.loop(Looper.java:135)
E/Qt      (12767):  at android.app.ActivityThread.main(ActivityThread.java:5254)
E/Qt      (12767):  at java.lang.reflect.Method.invoke(Native Method)
E/Qt      (12767):  at java.lang.reflect.Method.invoke(Method.java:372)
E/Qt      (12767):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
E/Qt      (12767):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

部署应用程序时,androiddeployqt 将复制一堆文件,当源路径或目标路径超过 260 个字符(是的,那是“known feature”)。尽可能将 Qt 安装和项目目录保持在顶层有助于减少路径长度并解决问题。基本上就是这样!