2016-05-19 1 views
3

Bonjour J'espère que quelqu'un peut m'aider ici. Je travaille sur une application utilisant UrbanAirship pour recevoir PushNotifications.Android UrbanAirship Crash dans takeOff

Mon problème est que, depuis ce matin, mon application se bloque lors de l'initialisation de UrbanAirship avec takeOff. J'utilise Android Studio v2.1.1 (stable) et mis à jour ma Build et Platform-Tools pour utiliser les versions les plus récentes. Après le crash, j'ai testé si elle est provoquée par les nouveaux outils en utilisant une ancienne version de ces outils et différentes versions d'Android Studio (2.0, 1.3 et 1.5). Donc je suis sûr que ça ne devrait pas être le problème.

Voici le code Je utilise et la trace de pile de mon LogCat:

UAirship.takeOff(this, Config.getOptions(), mAirshipReadyCallback); 

getOptions renvoie les éléments suivants:

public static AirshipConfigOptions getOptions() { 
    return new AirshipConfigOptions.Builder() 
     .setDevelopmentAppKey("Key") 
     .setDevelopmentAppSecret("Secret") 
     .setProductionAppKey("Key") 
     .setProductionAppSecret("Secret") 
     .setInProduction(!BuildConfig.DEBUG) 
     .setGcmSender("Sender") 
     .setProductionLogLevel(3).build(); 
} 

Et mon rappel est la suivante:

private UAirship.OnReadyCallback mAirshipReadyCallback = new UAirship.OnReadyCallback() { 
     @Override 
     public void onAirshipReady(UAirship uAirship) { 
      DefaultNotificationFactory notificationFactory; 
      notificationFactory = new DefaultNotificationFactory(getApplicationContext()); 

      notificationFactory.setSmallIconId(R.drawable.ic_push); 
      notificationFactory.setLargeIcon(R.drawable.ic_launcher); 
      try { 
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
        notificationFactory.setColor(getColor(R.color.main_list_item_text_enabled)); 
       } else { 
        notificationFactory.setColor(getResources().getColor(R.color.main_list_item_text_enabled)); 
       } 
      } catch (Resources.NotFoundException ex) { 
       Timber.e(ex.getCause(), ex.getMessage()); 
       notificationFactory.setColor(Color.parseColor("0e457e")); 
      } 

      // Enable user notifications 
      Timber.i("Enable Airship!"); 
      Timber.i("UAirship ChannelId: " + UAirship.shared().getPushManager().getChannelId()); 
      uAirship.getPushManager().setNotificationFactory(notificationFactory); 
      uAirship.getPushManager().setUserNotificationsEnabled(true); 
     } 
    }; 

Enfin le StackTrace:Hier, tout s'est bien passé et je n'ai pas mis à jour les bibliothèques que j'utilise.

Merci d'avance, salutations :)

Modifier

Voici mes dépendances Gradle:

dependencies { 

compile fileTree(dir: 'libs', include: ['*.jar', '*.aar']) 
repositories { 
    mavenCentral() 

    flatDir { 
     dirs 'libs' 
    } 

    maven { url 'https://repo.commonsware.com.s3.amazonaws.com' } 
    maven { url 'https://urbanairship.bintray.com/android' } 
    maven { url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2' } 
} 

    compile('com.urbanairship.android:urbanairship-sdk:7.1.3') { 
    exclude group: 'com.google.android.support', module: 'support-v4' 
    exclude group: 'com.google.android.gms', module: 'play-services-gcm' 
     transitive = true 
} 

compile('de.keyboardsurfer.android.widget:crouton:[email protected]') { 
    exclude group: 'com.google.android.support', module: 'support-v4' 
    transitive = true 
} 

compile('com.facebook.android:facebook-android-sdk:4.8.1') { 
    exclude group: 'com.google.android.support', module: 'support-v4' 
} 
compile 'com.android.support:multidex:1.0.1' 
compile 'com.android.support:support-v4:23.3.0' 
compile 'com.android.support:appcompat-v7:23.3.0' 
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 
compile 'com.squareup.okhttp:okhttp:2.5.0' 
compile 'com.squareup.okhttp:logging-interceptor:2.6.0' 
compile 'com.google.code.gson:gson:2.4' 
compile 'com.jakewharton:butterknife:5.1.1' 
compile 'com.jakewharton.timber:timber:4.1.1' 
compile 'commons-io:commons-io:2.4' 
compile 'org.apache.commons:commons-lang3:3.4' 
compile 'com.google.android.gms:play-services-analytics:8.4.0' 
compile 'com.google.android.gms:play-services-gcm:8.4.0' 
compile 'com.google.android.gms:play-services-ads:8.4.0' 
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
    transitive = true; 
} 

compile 'org.xwalk:xwalk_core_library:16.45.421.19' 
compile 'com.amplitude:android-sdk:2.5.0' 

}

Modifier 2

J'ai également essayé d'utiliser la version 6.4.1 d'UrbanAirship-SDK sans exclure google.gms et les bibliothèques de support android, sans aucun effet.

De plus, je mis à jour toutes les dépendances possibles dans ma gradle utiliser la dernière version (seulement le changement):

compile'com.urbanairship.android:urbanairship-sdk:7.1.3' 
compile 'com.google.android.gms:play-services:9.0.0' 
compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:support-v4:23.4.0' 

toujours pas de changement

+0

Pouvez-vous s'il vous plaît ajouter votre fichier Gradle. Je pense que vous utilisez l'ancienne bibliothèque de service de jeu dans la section de dépendance sous build.gradle. – Nithinjith

+0

@Nithinjith ajouté les dépendances gradle –

+0

@Nithinjith J'ai mis à jour toutes les dépendances pour faire correspondre les versions les plus récentes. Par conséquent, les bibliothèques du service de lecture sont désormais v 9.0.0 mais l'exception est toujours levée. –

Répondre

24

Comme l'a souligné @ralepinski. L'exemple d'application d'UA fonctionnait comme prévu.Alors je me plongeai dans l'utilisation des bibliothèques et gradle et a découvert que ce problème a été causé par l'usage interne de

'com.android.support:support-v4:23.4.0' 
'com.android.support:appcompat-v7:23.4.0' 

Certains des plugins utilisés utiliser ces bibliothèques ainsi et le conflit était dans l'utilisation de différentes versions de ces bibliothèques. Je résolu ce problème en utilisant la commande force à l'intérieur du gradle (voir ci-dessous):

configurations.all { 
    resolutionStrategy { 
     force 'com.android.support:design:23.4.0' 
     force 'com.android.support:support-v4:23.4.0' 
     force 'com.android.support:appcompat-v7:23.4.0' 
    } 
} 

Id aiment vous remercier tous pour votre aide et j'upvotet @ralepinskis réponse qui a donné l'indication de regarder la exemple de projet. Je n'ai pas assez de réputation maintenant mais quand j'ai l'upvote devrait être ajouté automatiquement.

:)

+0

Heureux que vous l'ayez compris :) – ralepinski

+0

Cela a résolu mon problème aussi. Merci mec. – Neo

+0

Cela fonctionne, merci beaucoup. Je veux juste comprendre ce que fait ce morceau de code? –

0
This what your gradle should look like and Hope you have added permission in manifest for the same: 

repositories { 
    jcenter() 
    maven { url 'https://maven.fabric.io/public' } 
    maven { url 'http://dl.bintray.com/urbanairship/android' } 
} 

dependencies { 
    compile fileTree(include: '*.jar', dir: 'libs') 
    compile 'com.google.android.gms:play-services-analytics:8.4.0' 
    compile 'com.google.android.gms:play-services-identity:8.4.0' 
    compile 'com.google.android.gms:play-services-base:8.4.0' 
    compile 'com.google.android.gms:play-services-appindexing:8.4.0' 
    compile 'com.google.android.gms:play-services-location:8.4.0' 
    compile 'com.google.android.gms:play-services-wearable:8.4.0' 
    compile 'com.google.android.gms:play-services-ads:8.4.0' 
    compile 'com.google.android.gms:play-services-plus:8.4.0' 
    compile project(':PlustxtAsSDK') 
    compile 'com.urbanairship.android:urbanairship-sdk:6.4.1' 
} 
+0

J'ai mis en œuvre vos changements suggérés, mais ils ne réussissent pas à résoudre mon problème Je reçois toujours l'erreur ci-dessus –

1

On dirait un changement de rupture dans la bibliothèque du soutien technique une interface est maintenant une classe abstraite. Assurez-vous que 23.3 de la bibliothèque de support et de l'application et 8.4 services de localisation Google. Nettoyer et reconstruire. Vous pouvez vérifier le répertoire de construction pour vérifier les versions. Parfois, d'autres dépendances vont en retirer de nouvelles.

+0

Je ai peur que cela n'a pas aidé non plus:/ –

+0

quelle version android construisez-vous contre (api 23? N?) pourriez-vous publier la sortie de dépendances ./gradlew – ralepinski

+0

Je viens de construire l'application d'échantillon UA ​​avec 23,3, android studio 2.1, android gradle plugin 2.1, et les outils de construction "23.0.3". Tout a bien fonctionné. – ralepinski