2015-06-18 8 views
6

Dopo aver importato QtQuick.Controls 1.2 e utilizzando il componente StackedWidget, ora ricevo un errore durante la distribuzione su Android, come illustrato di seguito. Il file mancante AnimationDrawable.qml non è mancante dalla directory di build di Android, quindi non capisco perché non è pacchettizzato con l'APK.Distribuzione su Android risulta in un file non trovato dopo l'aggiunta di QtQuick Controls

Si distribuisce correttamente quando rimuovo lo QtQuick.Controls importato e sostituisco lo StackView con qualcos'altro.

La mia versione Qt è 5.4.2.

Ho provato a distribuirlo con Qt 5.3.2 e funziona come previsto.

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): \t at android.content.res.AssetManager.openAsset(Native Method) 
 
E/Qt  (12767): \t at android.content.res.AssetManager.open(AssetManager.java:313) 
 
E/Qt  (12767): \t at android.content.res.AssetManager.open(AssetManager.java:287) 
 
E/Qt  (12767): \t at org.qtproject.qt5.android.bindings.QtActivity.copyAsset(QtActivity.java:394) 
 
E/Qt  (12767): \t at org.qtproject.qt5.android.bindings.QtActivity.extractBundledPluginsAndImports(QtActivity.java:503) 
 
E/Qt  (12767): \t at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:582) 
 
E/Qt  (12767): \t at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:895) 
 
E/Qt  (12767): \t at android.app.Activity.performCreate(Activity.java:5990) 
 
E/Qt  (12767): \t at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
 
E/Qt  (12767): \t at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
 
E/Qt  (12767): \t at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
 
E/Qt  (12767): \t at android.app.ActivityThread.access$800(ActivityThread.java:151) 
 
E/Qt  (12767): \t at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
 
E/Qt  (12767): \t at android.os.Handler.dispatchMessage(Handler.java:102) 
 
E/Qt  (12767): \t at android.os.Looper.loop(Looper.java:135) 
 
E/Qt  (12767): \t at android.app.ActivityThread.main(ActivityThread.java:5254) 
 
E/Qt  (12767): \t at java.lang.reflect.Method.invoke(Native Method) 
 
E/Qt  (12767): \t at java.lang.reflect.Method.invoke(Method.java:372) 
 
E/Qt  (12767): \t at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
 
E/Qt  (12767): \t at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

+1

Se sei su Windows, ho indovinato: il percorso diventa troppo lungo (> 256 caratteri è un vero problema per Windows). Ciò accade solo quando si importa QtQuick perché verrà distribuita la cartella Stili. Prova ad installare Qt come il più alto livello possibile sul tuo sistema per rendere i percorsi più brevi. Questo dovrebbe farlo! – qCring

+0

@qCring: Qt è installato in C:/Qt/*, ma il progetto è un po 'in un percorso profondo. Potrebbe causare lo stesso comportamento? E ho appena verificato che funzioni su Qt 5.3.2 – Phat

+1

Sì, immagino che lo stesso valga per i percorsi di destinazione. Ci proverò! – qCring

risposta

8

Quando si distribuisce l'applicazione, androiddeployqt sarà copiare un gruppo di file che non riesce terribilmente su Windows quando i percorsi di origine o di destinazione diventano più lunghi di 260 caratteri (sì, è un "known feature"). Mantenere l'installazione Qt e la directory del progetto il più alto possibile, aiuta a ridurre la lunghezza del percorso e a risolvere il problema. E questo è fondamentalmente!

Problemi correlati