2014-10-02 6 views
5

Ciao a tutti e dispiace in anticipo per aver posto questa domanda, ma dopo cinque giorni di ricerche su StackOverflow e facendo google-engineering ho ancora ricevuto alcuna risposta per la mia domanda:Qt Creator 3.2.1 compresa .jar per android

Vorrei includere diversi file * .jar nel mio progetto che saranno utilizzati dalla mia app per Android dopo che Qt l'ha compilato.

Ecco il mio ambiente:

  • installati Qt Creator 3.2.1 (exe, non compilato da fonti)
  • main.cpp (a partire Qt-Part)
  • Android/MainActivity.java (iniziando semplici cose "Hello world" e includeranno diverse classi fornite da .jars (google-api-client-1.19.0.jar google-api-client-android-1.19.0.jar google-http-client-1.19. 0.jar google-http-client-android-1.19.0.jar google-http-client-jackson-1.19.0.jar google-oauth-client-1.19.0.jar jackson-core-asl-1.9.13. jar jsr305-1.3.9.jar)
  • Android/AndroidManifest.xml
  • Android/libs contenenti le richieste .jars

Dopo googling per quel problema, ho provato quasi tutto, ottenendo lo stesso risultato ogni volta: i .jars non si trovano per la applicazione Android o il processo di compilazione non ha funzionato:

[javac] C:\workspaces\qt_android\build-GsQt-Android\android-build\src\com\gservice\MainActivity.java:14: error: package com.google.android.gms.common does not exist 
[javac] import com.google.android.gms.common.ConnectionResult; 
[javac]         ^
[javac] C:\workspaces\qt_android\build-GsQt-Android\android-build\src\com\gservice\MainActivity.java:15: error: package com.google.android.gms.common.api does not exist 
[javac] import com.google.android.gms.common.api.GoogleApiClient; 
[javac]           ^\MainActivity.java:15: error: package com.google.android.gms.common.api does not exist 

e così via, per tutti gli otto vasi che devono essere inclusi.

Qui sono le cose che ho cercato di includerli:

  • creato una cartella all'interno di Android, chiamato "libs" e mettere i miei vasi in esso. Dopo aver creato il progetto, la cartella e i vasi sono stati copiati nella directory di costruzione. Non per il dispositivo come sembra.
  • incluso loro come semplici altri file come l'AndroidManifest e la MainActivity:
OTHER_FILES += \ 
android/libs/google-api-client-1.19.0.jar \ 
android/libs/google-api-client-android-1.19.0.jar \ 
android/libs/google-api-services-gmail-v1-rev2-1.18.0-rc.jar \ 
android/libs/google-http-client-1.19.0.jar \ 
android/libs/google-http-client-android-1.19.0.jar \ 
android/libs/google-http-client-jackson-1.19.0.jar \ 
android/libs/google-oauth-client-1.19.0.jar \ 
android/libs/jackson-core-asl-1.9.13.jar \ 
android/libs/jsr305-1.3.9.jar \ 
android/AndroidManifest.xml \ 
android/src/com/gservice/MainActivity.java \ 
  • cercando l'asset-inclusione nel file .pro:
LIBS_INSTALL_PATH=/assets/libs 

librerie .path = android/libs libraries.files + = google-api-client-1.19.0.jar google-api-client-android-1.19.0.jar google-http-client-1.19.0.jar google-http -client-android-1.19.0.jar google-http-client-jackson-1.19.0.jar google-oauth-client-1.19.0.jar jackson-core-asl-1.9.13.jar jsr305-1.3.9 .jar libraries.depends + = FORZA installa + = librerie

  • creazione di un file libraries.qrc per inserire questa via RISORSE + = libraries.qrc nel file .pro. librerie.QRC:
<RCC> 
<qresource prefix="/libs"> 
    <file>android/libs/google-api-client-1.19.0.jar</file> 
    <file>android/libs/google-api-client-android-1.19.0.jar</file> 
    <file>android/libs/google-api-services-gmail-v1-rev2-1.18.0-rc.jar</file> 
    <file>android/libs/google-http-client-1.19.0.jar</file> 
    <file>android/libs/google-http-client-android-1.19.0.jar</file> 
    <file>android/libs/google-http-client-jackson-1.19.0.jar</file> 
    <file>android/libs/google-oauth-client-1.19.0.jar</file> 
    <file>android/libs/jackson-core-asl-1.9.13.jar</file> 
    <file>android/libs/jsr305-1.3.9.jar</file> 
</qresource> 
</RCC> 
  • cercando con qmake (che restituisce un errore, quel file RCC non è trovato) "rcc -binary google-api-client-1.19.0.jar -o google-api-client-1.19.0.rcc" come ulteriore parametro

... io davvero non lo so che cosa fare dopo, tutte le mie configurazioni Android (JDK, SDK, NDK, Ant) sono nel posto giusto e sono accessibili, vengono impostate var e ANT var JAVA_HOME.

Due scentences alla fine: il codice che voglio includere per Android è un'app di autenticazione Google+ che ho già creato con Android ADT e che funziona perfettamente. Trasferirò i componenti di lavoro nell'ambiente di costruzione di Qt.

Grazie in anticipo per aver letto questa descrizione e per avermi aiutato a risolverlo!

Loyd

risposta

0

OTHER_FILES è solo per il consumo umano. Viene utilizzato solo da Project explorer di Qt Creator per includere i file nell'albero. Non è affatto usato nel processo di costruzione.

Il sistema di risorse Qt (QRC) è utilizzabile solo da QFile, la macchina virtuale Android non è a conoscenza di questi "file".

+0

Quindi non è possibile includere un file .jar in alcun modo per "inoltrarlo" alla mia applicazione Android, creata con Qt? –

+0

@LoydSchnitzel Sono sicuro che ci sia, sto semplicemente indicando ciò che sicuramente non funzionerà. –

+0

Hai ragione ... Ogni volta che possiamo eleminare un modo sbagliato, è un altro passo nel modo giusto! Grazie per il tuo contributo! (Valuterebbe la tua risposta, ma non ho la reputazione richiesta fino ad ora) –

4

SOLUZIONE:

C'è un modo per includere e utilizzare file .jar con Android e Qt. ed è certamente il modo più semplice che si possa immaginare:

  1. Aprire la cartella Android del progetto Qt
  2. Creare una cartella denominata "libs" (stesso livello di cartella "src" e "AndroidManifest.xml")
  3. mettere i file .jar * che si desidera utilizzare nelle librerie cartella
  4. Importarli all'interno del file Android-java come al solito

Questo è tutto. Non è necessario alcun adattamento di Project.pro o main.qrc e inoltre non è necessario creare un file .properties per Android o simili.

+0

Grazie ... risparmia! –

+0

Prego =) ho pensato, la nuova versione di Qt ha ottenuto un aggiornamento della documentazione, ma è ancora un po 'frammentaria ;-) –

+0

come #include a C++ o qml? –