Jar GCMRegistrar provoquant une erreur dans Eclipse, source introuvable.Débogage des stands
-
11-12-2019 - |
Question
J'essaie d'enregistrer une application Android avec Google GCM et cela semble provoquer une erreur dans Eclipse.De l'aide?
explose dès que j'essaie de vérifier s'il est enregistré.Sa compilation est correcte et j'ai ajouté le import com.google.android.gcm.GCMRegistrar;
Je pense que c'est plus parce que je ne comprends pas Java et Eclipse, que GCM, mais qui sait
J'ai ajouté des filtres d'étape à ignorer com.google.android.gcm.*
et je me suis assuré d'inclure la bibliothèque gdm.jar dans mon dossier libs local avec mon projet et le chemin de construction.
Si je parcours le code, il s'arrête lorsque j'essaie de franchir la première ligne où GCMRegistrar
est référencé et dit et dit "source introuvable".Si je ne mets aucun point d'arrêt, il s'arrête quand il atteint GCMRegistrar
et dit "source introuvable".
private void checkRegistration(){
try{
if (!GCMRegistrar.isRegistered(getApplicationContext())) {
// Automatically registers application on startup.
GCMRegistrar.register(getApplicationContext(), Utilities.GCM_SENDER_ID);
} else {
final String regId = GCMRegistrar.getRegistrationId(getApplicationContext());
if(regId.equals("")){
GCMRegistrar.register(getApplicationContext(), Utilities.GCM_SENDER_ID);
}else{
// Device is already registered on GCM
if(regId == Utilities.getGcmRegKey(this)){
}else{
pwClient.updateGCMRef("add", regId, Utilities.getApiKey(this), Utilities.getDeviceId(this));
Utilities.setGcmRegKey(this, regId);
}
}
}
}catch(Exception ex){
Log.e("PW", "register error: " + ex.getMessage());
}
}
}
La solution
J'ai dû arrêter de travailler sur mon projet GCM, mais j'ai au moins réussi à obtenir la source des éléments côté client GCM, donc cela pourrait vous aider un peu à déboguer.À partir des outils du SDK R17, Google a rendu l'attachement des sources et des javadocs très pénible, mais cela peut être fait.
Dans le même répertoire 'dist' où vous avez trouvé le fichier gcm.jar se trouve un autre fichier jar gcm-src.jar - c'est la source.Donc, dans votre répertoire libs, créez un nouveau fichier appelé gcm.jar.properties.
Il devrait contenir une ligne comme
src=C:\\dev\\tools\\android-sdk-windows4.1\\extras\\google\\gcm\\gcm-client\\dist\\gcm-src.jar
(Modifiez ceci pour faire référence à votre installation du SDK, en changeant le \\s en /s si vous êtes sous Linux)
Maintenant fermez votre projet et rouvrez-le, sinon ça ne marchera pas, Dieu sait pourquoi !
Vous devriez maintenant avoir des fenêtres contextuelles de type javadoc « survoler » et pouvoir accéder aux méthodes statiques de GCMRegistrar.Quant à la raison pour laquelle votre code explose, cela vous rapprochera peut-être.
Par ailleurs, l'exemple de code sur lequel j'ai basé mon projet avait ces deux lignes au début de l'enregistrement
// Check that the device supports GCM (should be in a try / catch)
GCMRegistrar.checkDevice(this);
// Check the manifest to be sure this app has all the required permissions.
GCMRegistrar.checkManifest(this);
Ils pourraient faire la lumière sur les choses
Autres conseils
Selon ici, GCM nécessite Android 2.2 ou version ultérieure, vérifiez d'abord si les versions de votre SDK manifeste sont correctes
Deuxièmement, faites un clic droit sur votre projet et sélectionnez Propriétés => Chemin de construction Java => Bibliothèques et assurez-vous que gcm.jar existe dans la liste