Android Studio (GCM Abhängigkeit)

  • Hallo miteinander,



    derzeit beschäftige ich mich mit dem Android Studio und versuche darüber eine kleine App zu erstellen. Diese soll nichts weiter können als Push Notifications zu empfangen. Dazu benötige ich laut Google die Google Play Service lib.


    Hierzu habe ich nun also google-play-services als Modul hinzugefügt und weiterhin in der Projekt Struktur -> Abhängigkeiten die dazugehörige .jar ausgewählt. Nun zeigt mir der Editor keine Fehler mehr an und ich kann weiterarbeiten. Will ich es nun aber testen meckert die IDE:


    Gradle: package com.google.android.gms.gcm does not exist


    Gradle: cannot find symbol class GoogleCloudMessaging


    Gradle: cannot find symbol variable GoogleCloudMessaging



    Ok hab ich mir gedacht kopier ich mal zum Test die .jar direkt ins libs Verzeichnis der App und fügst in den "build.gradle" unter dependencis die Abhängigkeit ein:


    compile files('libs/android-support-v4.jar')



    Erneuter klick auf Run und die App wird erzeugt und auf meinem Gerät kopiert.


    Nun knallt es aber gewaltig und LogCat zeigt mir folgenden Fehler an:



    FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com.google.android.gms.gcm.GoogleCloudMessaging
    at de.example.MainActivity.onCreate(MainActivity.java:35)


    Nun frage ich mich natürlich was läuft hier falsch? Ist der Weg überhaupt korrekt mit Android Studio oder müssen die Abhängigkeiten anders mitgeteilt werden?

  • Woher hast du denn Android Studio?
    Klingt fein und würde ich auch gern mal ausprobieren. :)


    Dein Projekt braucht als Abhängigkeit (zumindest in IntelliJ, das ja soweit ich weiß Grundlage für Android Studio ist) beides.
    Also einmal die Abhängigkeit zur Bibliothek und einmal die Abhängigkeit zum Modul. Ist Schwachsinn, läuft aber nur so.
    (Vermutlich weil sich Ressourcen nicht in eine .jar stopfen lassen)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Das Studio kannst du unter folgender URL herunterladen:


    http://developer.android.com/sdk/installing/studio.html


    Bzgl. Abhängigkeiten ist schon sehr bescheuert gelöst, aber nun gut kann ich mit leben. Wie oben bereits angemerkt habe ich dies auch so eingerichtet. Ich finde es nur ziemlich umständlich und auch merkwürdig wieso ich da bitte bei den Graddle.build noch Hand anlegen soll. Derzeit ist es einfach nur eine Vermutung, da es bei mir wie erwähnt nicht lauffähig ist. Sitz da jetzt schon Std. dran und komme einfach nicht voran.

  • Hallo,


    hast du schon eine Lösung gefunden? Ich nutze ebenfalls Android Studio und möchte GCM benutzen, erhalte jedoch auch die Fehlermeldung

    Code
    java.lang.NoClassDefFoundError: com.google.android.gms.gcm.GoogleCloudMessaging



    wenn ich die gcm.jar und die google-play-services.jar in den libs Ordner kopiere.


    Meine build.cradle:


    Code
    buildscript {repositories {        maven { url 'http://repo1.maven.org/maven2' }    }    dependencies {        classpath 'com.android.tools.build:gradle:0.4'    }}apply plugin: 'android'
    dependencies {    compile fileTree(dir: "libs", include: "*.jar")}
    android {    compileSdkVersion 16    buildToolsVersion "17.0.0"
        defaultConfig {        minSdkVersion 16        targetSdkVersion 17    }}
  • nnscr:


    Allerdings. Da du scheinbar nur ein Projekt hast und nicht wie ich mehrere bzw. mehrere buildTypes dürften deine Probleme mit einem einfachen ./gradlew clean verschwinden.
    Wenn du wie ich mehrere Projekte nutzt z.b:


    Hauptprojekt
    Lib1
    Lib2
    etc.


    reicht ein clean "vorerst" nicht immer aus. Aus den weiteren Projekten Lib1, Lib2 werden aar Pakete erzeugt. Diese musste ich unter anderem entfernen bevor es überhaupt funktionierte.


    Allgemein kann man aber sagen, dass Gradle sehr mächtig ist und derzeit die Integration sehr Buggy ist. Habe hierzu auch bereits mit Xavier bzw. Haase geschrieben. Ob Gradle allerdings für den "kleinen" Entwickler wirklich das Beste ist sei mal dahingestellt.


    Mit Version 0.4.1 haben sich im übrigen einige Bugs verabschiedet. Einfach die Versionsnummer von Gradle in den dependencies erhöhen. Die neueste Version wird dann geladen und angewendet.



    khh Ich denke vorerst ist das auch die beste Entscheidung. Grad in den BuildTools läuft einiges schief. Irgendwann wirst du aber nicht drum rum kommen. ^^



    Mein nächstes Ziel mit Gradle ist es, cloud Emulatoren einzubinden und die versch. BuildTypes automatisch zur Verfügung zu stellen ;) Jemand evtl. schon Erfahrungen hiermit gesammelt?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!