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++.
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. –
@RahulAssassin È possibile creare una semplice applicazione Android Qt e vedere il file Java 'QtActivity.java' generato in' $ BUILD_TARGET/android/src/... '. – Nejat
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. –