2015-01-13 10 views
5

Stavo pensando di trasferire la mia applicazione Qt su Android.Porting del codice Qt su Android e come funziona

La mia domanda è come un codice scritto in C++ e Qt che è anche una libreria C++ viene portato su Android come Android richiede codice java e un file apk è necessario per installare l'app sul dispositivo. Sono curioso di sapere come e cosa fanno sul codice per farlo funzionare come un codice java.

Se la domanda non è chiara, si prega di commentare e farò del mio meglio per renderlo più chiaro.

risposta

4

Le applicazioni Android sono applicazioni Java, in esecuzione su una macchina virtuale denominata "Dalvik". Ciò causa molte sfide per un'applicazione Qt/C++ da eseguire su una tale piattaforma basata su Java. Per ovviare a questo, un'applicazione Qt per Android ha due parti. La prima parte è l'applicazione nativa Qt/C++ organizzata da qmake. La seconda parte è un launcher che è un codice Java generato da Qt Creator automaticamente in base alle preferenze dell'applicazione, alle impostazioni e alla versione Android di destinazione.

Il programma di avvio è un processo Java, quindi le applicazioni Qt Android hanno un punto di ingresso basato su Java. Il codice Java in launcher caricherà le librerie Qt richieste, in base alla metadata fornita in altri file nel modello. Quindi, quando viene avviata un'applicazione Qt per Android, è solo una normale applicazione Java. Il punto di ingresso sarà QtActivity.java che può essere trovato sotto android/src/… nella directory di costruzione del progetto.

Dopo aver caricato le librerie Qt, il codice Java avvierà la funzione main() nativa dell'applicazione su un nuovo thread e l'applicazione verrà avviata. A questo punto, il codice Java viene utilizzato per delegare eventi da Android a Qt. Qt per le applicazioni Android utilizzano "Java Native Interface" (JNI) per comunicare tra mondo Java e mondo C++.

+0

Grazie mille per questa intuizione. È stato davvero utile, ma non so come sono nuovo a questo. solo un'altra cosa, la parte in cui hai detto che "la seconda parte è il programma di avvio che genera codice java dal creatore di Qt". Volevo solo sapere quale codice genera che consente la comunicazione tra il mondo C++ e il mondo java. Es. Se scrivo il programma HelloWorld in C++, quale codice lo renderà richiamabile da java. Spero di chiederti la domanda giusta, correggimi se sbaglio. –

+0

@RahulAssassin È possibile creare una semplice applicazione Android Qt e vedere il file Java 'QtActivity.java' generato in' $ BUILD_TARGET/android/src/... '. – Nejat

+0

Ho creato l'applicazione qt e posso eseguirlo con successo sul mio dispositivo ma non riesco a trovare un modo per cambiare l'immagine dell'applicazione. Per favore aiutatemi. –

0

Basta usare Qt5.4.0 e installare NDK + Android SDK, troverete che è molto semplice utilizzare C++ su Android.

+0

Grazie. Prima stavo provando con la Qt 5.1 senza fortuna. Ora l'ho cancellato e ho installato Qt 5.4. Vi farà sapere se funziona, ma grazie comunque. –

+0

Finalmente ho potuto eseguire l'applicazione QT sul mio dispositivo Android .. :) –

+0

congratulazioni! – sbabybird

Problemi correlati