2014-10-02 5 views
5

Hallo zusammen und leider im Voraus für diese Frage, aber nach fünf Tagen auf der Suche und Stackoverflow tut Google-Engineering Ich habe immer noch keine Antwort auf meine Frage:Qt Creator 3.2.1 einschließlich .jar für Android

Ich möchte gerne einige * .jar-Dateien in mein Projekt einfügen, die von meiner Android-App verwendet werden sollen, nachdem Qt es kompiliert hat.

Hier ist meine Umgebung:

  • Qt Creator 3.2.1 installiert (exe, nicht aus den Quellen kompiliert)
  • main.cpp (ab Qt-Part)
  • android/MainActivity.java (Start einfache "Hello World" Sachen und soll verschiedene Klassen von der .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. Glas jsr305-1.3.9.jar)
  • android/AndroidManifest.xml
  • android/libs die erforderlichen .jars

Nach googeln für dieses Problem enthält, habe ich versucht, fast alles, um das gleiche Ergebnis jedes Mal bekommen: die .jars sind nicht für die gefunden android-Anwendung oder der Build-Prozess hat nicht funktioniert:

[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 

und so weiter, für alle acht Gläser, die aufgenommen werden soll.

Hier sind die Dinge, die ich versuchte, sie umfassen:

  • einen Ordner innerhalb android erstellt, genannt „Libs“ und meine Gläser hineingesteckt. Nach dem Erstellen des Projekts wurden der Ordner und die JAR-Dateien in das Build-Verzeichnis kopiert. Von nicht zu dem Gerät, wie es scheint.
  • enthalten sie so einfach andere Dateien wie die AndroidManifest und der 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 \ 
  • die Vermögenswerte-Aufnahme in die .proDatei versuchen:
LIBS_INSTALL_PATH=/assets/libs 

Bibliotheken .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 + = FORCE INSTALLS + = Bibliotheken

  • eine libraries.qrc-Datei erstellen und nimmt diese über RESOURCES + = libraries.qrc in der .pro-Datei. Bibliotheken.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> 
  • mit qmake versucht (was einen Fehler zurückgibt, ist, dass RCC-Datei nicht gefunden) "rcc -binary google-api-client-1.19.0.jar -o google-api-client-1.19.0.rcc" als zusätzlicher Parameter

... Ich weiß nicht wirklich Was als nächstes zu tun ist, alle meine Android-Konfigurationen (JDK, SDK, NDK, Ant) sind an der richtigen Stelle und sind zugänglich, JAVA_HOME var und ANT var sind gesetzt.

Zwei Szenarien am Ende: Der Code, den ich für Android einschließen möchte, ist eine Google+ Authentifizierungs-App, die ich bereits mit dem Android ADT erstellt habe und das funktioniert gut. Ich werde diese funktionierenden Komponenten in die Build-Umgebung von Qt übertragen.

Vielen Dank im Voraus für das Lesen dieser laaaaange Beschreibung und für die Hilfe, die ich gelöst habe!

Loyd

Antwort

0

OTHER_FILES ist nur für den menschlichen Verzehr. Es wird nur vom Projekt-Explorer von Qt Creator verwendet, um die Dateien in den Baum aufzunehmen. Es wird überhaupt nicht im Build-Prozess verwendet.

Das Qt Resource System (QRC) ist nur von QFile nutzbar, die Android VM hat keine Kenntnis von diesen "Dateien".

+0

Also gibt es keine Möglichkeit, eine .jar-Datei in irgendeiner Weise zu "Weiterleiten" es an meine Android-Anwendung, mit Qt erstellt? –

+0

@LoydSchnitzel Da bin ich sicher, ich weise nur darauf hin, was sicher nicht geht. –

+0

Sie haben Recht ... Jedes Mal, wenn wir einen falschen Weg finden können, ist es ein weiterer Schritt in die richtige Richtung! Danke für deinen Beitrag! (Würde deine Antwort bewerten, habe aber bis jetzt noch nicht den nötigen Ruf) –

4

LÖSUNG:

Es gibt einen Weg zu umfassen und Dateien, die mit Android und Qt verwenden .jar. Und es ist sicherlich der einfachste Weg, die man sich vorstellen kann:

  1. Öffnen Sie die Android-Ordner Ihrer Qt-Projekt
  2. Erstellen Sie einen Ordner „libs“ (gleiche Höhe wie Ordner „src“ und „AndroidManifest.xml“ genannt)
  3. Setzen Sie die * .jar-Dateien Sie in die libs
  4. importieren Sie sie in Ihrem android-Java-Datei wie gewohnt

das ist es Ordner verwenden möchten. Es ist keine Anpassung von Project.pro oder main.qrc erforderlich, und es muss auch keine .properties-Datei für Android oder Ähnliches erstellt werden.

+0

Danke..lifesaver! –

+0

Gern geschehen =) Ich dachte, die neue Version von Qt hat ein Dokumentations-Update bekommen, aber es ist immer noch ein bisschen fragmentarisch ;-) –

+0

wie man es in C++ oder Qml einbezieht? –